URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 88840
[ Назад ]

Исходное сообщение
"Почта не уходит из очереди Postfix"

Отправлено MAXOB , 29-Апр-10 11:13 
Добрый день! После обновления антивирусника clamav возникла следующая проблема: поста перестала уходить из очерди ни на локальные, ни на внешние адреса, при этом непонятна причина по которой она там застревает. Вот пример о сообщении из mailq:

145A75631A4     1091 Thu Apr 29 11:03:16  makhov@neo-bit.ru
                                         makhov@ssl.stu.neva.ru

Есть подозрения, что почта держится именно антивирусником, но что ей может мешать не представляю. Может есть у кого-нибудь предположения? Если нужны какие-нибудь конфиги, с удовольствием выложу.
Заранее спасибо.


Содержание

Сообщения в этом обсуждении
"Почта не уходит из очереди Postfix"
Отправлено PavelR , 29-Апр-10 11:27 

>Может есть у кого-нибудь предположения?

У почтового сервера отсутствует адекватный админ.

>Если нужны какие-нибудь конфиги, с удовольствием выложу.

В логи посмотреть не пробовали ?



"Почта не уходит из очереди Postfix"
Отправлено MAXOB , 29-Апр-10 11:57 

> У почтового сервера отсутствует адекватный админ.
>

вот тут Вы правы, с почтовыми системами на юниксе столкнулся впревый раз, но что делать, мы все учились по-немногу...

>>Если нужны какие-нибудь конфиги, с удовольствием выложу.
>
> В логи посмотреть не пробовали ?

пробовал, вот лог calm'a:
+++ Started at Thu Apr 29 11:14:38 2010
clamd daemon 0.96 (OS: openbsd3.8, ARCH: i386, CPU: i386)
Log file size limited to 1048576 bytes.
Reading databases from /var/lib/clamav
Not loading PUA signatures.
Loaded 758686 signatures.
ERROR: LOCAL: Socket file /tmp/clamd is in use by another process.
No stats for Database check - forcing reload
Reading databases from /var/lib/clamav
Database correctly reloaded (758686 signatures)
SelfCheck: Database status OK.
SelfCheck: Database status OK.

вот maillog:

Apr 29 11:51:03 www postfix/smtpd[16894]: connect from mail-relay-01.mailcluster.net 77.221.130.213]
Apr 29 11:51:03 www postfix/smtpd[16894]: EBD035631C6: client=mail-elay-01.mailcluster.net[77.221.130.213]
Apr 29 11:51:03 www postfix/cleanup[27290]: EBD035631C6: message-id=<1325480805.20100429115038@neo-bit.ru>
Apr 29 11:51:03 www postfix/qmgr[16957]: EBD035631C6: from=<makhov@neo-bit.ru>, size=1093, nrcpt=1 (queue active)
Apr 29 11:51:03 www postfix/smtpd[16894]: disconnect from mail-relay-01.mailcluster.net[77.221.130.213]
Apr 29 11:51:17 www postfix/anvil[14901]: statistics: max connection rate 2/60s for (smtp:188.16.111.35) at Apr 29 11:46:22
Apr 29 11:51:17 www postfix/anvil[14901]: statistics: max connection count 1 for (smtp:115.118.24.115) at Apr 29 11:41:17
Apr 29 11:51:17 www postfix/anvil[14901]: statistics: max cache size 3 at Apr 29 11:46:41
Apr 29 11:51:20 www postfix/pipe[8305]: fatal: get_service_attr: unknown username: _clamav
Apr 29 11:51:21 www postfix/qmgr[16957]: warning: premature end-of-input on private/myfilter socket while reading input attribute name
Apr 29 11:51:21 www postfix/master[30253]: warning: process /usr/local/libexec/postfix/pipe pid 8305 exit status 1
Apr 29 11:51:21 www postfix/master[30253]: warning: /usr/local/libexec/postfix/pipe: bad command startup -- throttling
Apr 29 11:51:21 www postfix/qmgr[16957]: warning: private/myfilter socket: malformed response
Apr 29 11:51:21 www postfix/qmgr[16957]: warning: transport myfilter failure -- see a previous warning/fatal/panic logfile record for the problem description

Как я понимаю ругается он на "get_service_attr: unknown username: _clamav", но почему он на него ругается, если старый clam я снес, и пользователя удалил из системы?


"Почта не уходит из очереди Postfix"
Отправлено Hate , 29-Апр-10 11:33 
>Есть подозрения, что почта держится именно антивирусником, но что ей может мешать
>не представляю. Может есть у кого-нибудь предположения? Если нужны какие-нибудь конфиги,
>с удовольствием выложу.

Читать до просветления - http://www.opennet.me/opennews/art.shtml?num=26090


"Почта не уходит из очереди Postfix"
Отправлено MAXOB , 29-Апр-10 11:59 

>
>Читать до просветления - http://www.opennet.me/opennews/art.shtml?num=26090

не совсем понимаю, в какой именно момент должно было наступить просветление... то что старые версии calmav перестали работать, не объясняет почему не работает новая, или я опять что-то путаю?


"Почта не уходит из очереди Postfix"
Отправлено MAXOB , 29-Апр-10 13:38 
Вопрос снимается, в master.cf по прежнему был указан старый пользователь.
PavelR, админ у сервера стал хоть немного, но адекватней.
Всем ответившим спасибо!

"Почта не уходит из очереди Postfix"
Отправлено rr , 29-Апр-10 14:13 
что то ты попутал. в master.cf нет никакого упоминания по этому поводу.

1. проверяй,
ERROR: LOCAL: Socket file /tmp/clamd is in use by another process.

2. проверяй, под каким пользователем запускается clamd и что написано в /etc/passwd
mail# cat /etc/passwd | grep clamav
clamav:*:106:106:Clam Antivirus:/nonexistent:/sbin/nologin
mail#
mail# cat /usr/local/etc/clamd.conf | grep clamav
...
User clamav
...
mail#


"Почта не уходит из очереди Postfix"
Отправлено MAXOB , 29-Апр-10 14:22 
>что то ты попутал. в master.cf нет никакого упоминания по этому поводу.
>

Нет, не напутал:
#
# Other external delivery methods.
#
myfilter  unix  -       n       n       -       -       pipe
  flags=R user=clamav argv=/usr/local/av/myfilter.sh -f ${sender} -- ${recipient}
это скопировано из /etc/postfix/master.cf


"Почта не уходит из очереди Postfix"
Отправлено rr , 29-Апр-10 14:27 
прошу прощение)
а можно глянуть из интереса
/usr/local/av/myfilter.sh

"Почта не уходит из очереди Postfix"
Отправлено MAXOB , 29-Апр-10 15:25 
>прошу прощение)
>а можно глянуть из интереса
>/usr/local/av/myfilter.sh

Можно, почему бы и нет...
#!/bin/sh
INSPECT_DIR=/tmp #лБФБМПЗ ЛХДБ ВХДХФ УПИТБОСФШУС РЙУШНБ ДМС УЛБОЙТПЧБОЙС
SENDMAIL="/usr/local/sbin/sendmail -i"
VIRUSADMIN="milukov@ssl.stu.neva.ru" # БДТЕУ ДМС ХЧЕДПНМЕОЙЙК

EX_TEMPFAIL=75
EX_UNAVAILABLE=69

# УФТПЛБ ДМС ЪБРХУЛБ spamassassin
FILTER_SPAMC="/usr/local/bin/spamc -u _spamd -U /var/empty/spamd.sock"

trap "rm -f $INSPECT_DIR/in.$$ $INSPECT_DIR/vr.$$ $INSPECT_DIR/vr1.$$" 0 1 2 3 15

# рТПЧЕТЛБ ОБ УРБН
cat | $FILTER_SPAMC > $INSPECT_DIR/in.$$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; }

if [ "$4" == "mailcopy@ssl.stu.neva.ru" ] ; then
    MAIL_PATH="/home/sam/mail"
    cat $MAIL_PATH/mail_index | awk '{print $1+1}' >$MAIL_PATH/mail_index
    NAME=`cat $MAIL_PATH/mail_index`
    mv $INSPECT_DIR/in.$$ $MAIL_PATH/$NAME.eml
    chmod 666 $MAIL_PATH/$NAME.eml
    exit 0
fi

# рТПЧЕТЛБ ОБ ЧЙТХУЩ
/usr/local/bin/clamscan -v -r --no-summary --stdout ${INSPECT_DIR}/in.$$>$INSPECT_DIR/vr.$$

# тЕЪХМШФБФ РТПЧЕТЛЙ
AV_RESULT=$?

case "$AV_RESULT" in
0)
    # рТПЧЕТЕОП. нЙО ОЕФ :)
    $SENDMAIL "$@" <${INSPECT_DIR}/in.$$
    exit 0
    ;;
1)
    # пВОБТХЦЕО ЧЙТХУ. рПУЩМБЕН ХЧЕДПНМЕОЙЕ БДНЙОХ
    echo "Subject: VIRUS FOUND" >> $INSPECT_DIR/vr1.$$
    echo >> $INSPECT_DIR/vr1.$$
    echo "************************************************" >> $INSPECT_DIR/vr1.$$
    echo "* MAIL                                         *" >> $INSPECT_DIR/vr1.$$
    echo "************************************************" >> $INSPECT_DIR/vr1.$$
    echo >> $INSPECT_DIR/vr1.$$
    # чЛМАЮБЕН Ч ПФЮЕФ ТЕБМШОЩЕ БДТЕУБ ТЕМЕЕЧ
    grep Received $INSPECT_DIR/in.$$ >> $INSPECT_DIR/vr1.$$
    echo "Mail from: $2 (may be forget)" >> $INSPECT_DIR/vr1.$$
    echo "To: $4" >> $INSPECT_DIR/vr1.$$
    grep Subject $INSPECT_DIR/in.$$ >> $INSPECT_DIR/vr1.$$
    echo >> $INSPECT_DIR/vr1.$$
    echo "************************************************" >> $INSPECT_DIR/vr1.$$
    echo "* Virus(es)                                    *" >> $INSPECT_DIR/vr1.$$
    echo "************************************************" >> $INSPECT_DIR/vr1.$$
    # чЛМАЮБЕН Ч ПФЮЕФ УРЙУПЛ ЧЙТХУПЧ
    cat $INSPECT_DIR/vr.$$ >> $INSPECT_DIR/vr1.$$
    $SENDMAIL -f $VIRUSADMIN -r $VIRUSADMIN -F "Antivirus" $VIRUSADMIN < $INSPECT_DIR/vr1.$$
    exit 0
    ;;
*)
    # рТПЙЪПЫМБ ПЫЙВЛБ Ч ТБВПФЕ БОФЙЧЙТХУБ. уППВЭЙН ПВ ПЫЙВЛЕ БДНЙОХ
    echo "Subject: ANTIVIRUS FAILED" >> $INSPECT_DIR/vr1.$$
    echo >> $INSPECT_DIR/vr1.$$
    echo "************************************************" >> $INSPECT_DIR/vr1.$$
    echo "* Antivirus Failed with next problem           *" >> $INSPECT_DIR/vr1.$$
    echo "************************************************" >> $INSPECT_DIR/vr1.$$
    case "$AV_RESULT" in
    40)
        echo "* Unknown option passed.                       *" >> $INSPECT_DIR/vr1.$$
        ;;
    50)
        echo "* Database initialization error.               *" >> $INSPECT_DIR/vr1.$$
        ;;
    52)
        echo "* Not supported file type.                     *" >> $INSPECT_DIR/vr1.$$
        ;;
    53)
        echo "* Can't open directory.                        *" >> $INSPECT_DIR/vr1.$$
        ;;
    54)
        echo "* Can't open file. (ofm)                       *" >> $INSPECT_DIR/vr1.$$
        ;;
    55)
        echo "* Error reading file. (ofm)                    *" >> $INSPECT_DIR/vr1.$$
        ;;
    56)
        echo "* Can't stat input file / directory.           *" >> $INSPECT_DIR/vr1.$$
        ;;
    57)
        echo "* Can't get absolute path name of current      *" >> $INSPECT_DIR/vr1.$$
        echo "* working directory.                           *" >> $INSPECT_DIR/vr1.$$
        ;;
    58)
        echo "* I/O error, please check your filesystem.     *" >> $INSPECT_DIR/vr1.$$
        ;;
    59)
        echo "* Can't get information about current user     *" >> $INSPECT_DIR/vr1.$$
        echo "* from /etc/passwd.                            *" >> $INSPECT_DIR/vr1.$$
        ;;
    60)
        echo "* Can't  get  information  about  user         *" >> $INSPECT_DIR/vr1.$$
        echo "* clamav (default name) from /etc/passwd.      *" >> $INSPECT_DIR/vr1.$$
        ;;
    61)
        echo "* Can't fork.                                  *" >> $INSPECT_DIR/vr1.$$
        ;;
    63)
        echo "* Can't create temporary files/directories     *" >> $INSPECT_DIR/vr1.$$
        echo "* (check permissions).                         *" >> $INSPECT_DIR/vr1.$$
        ;;
    64)
        echo "* Can't write to temporary directory (please   *" >> $INSPECT_DIR/vr1.$$
        echo "* specify another one).                        *" >> $INSPECT_DIR/vr1.$$
        ;;
    70)
        echo "* Can't allocate and clear memory (calloc).    *" >> $INSPECT_DIR/vr1.$$
        ;;
    71)
        echo "* Can't allocate memory (malloc).              *" >> $INSPECT_DIR/vr1.$$
        ;;
    *)
        echo "Unknown error $AV_RESULT" >> $INSPECT_DIR/vr1.$$
        ;;
    esac
    echo "************************************************" >> $INSPECT_DIR/vr1.$$
    $SENDMAIL -f $VIRADMIN -r $VIRADMIN -F "Antivirus" "$VIRADMIN" < $INSPECT_DIR/vr1.$$
    exit $EX_TEMPFAIL
    ;;
esac

exit 0


"Почта не уходит из очереди Postfix"
Отправлено MAXOB , 29-Апр-10 15:26 
>прошу прощение)
>а можно глянуть из интереса
>/usr/local/av/myfilter.sh

Может вы мне за одно ответите, почему у меня появляется куча процессов clamscan, которые сжирают весь swap и вервер падает и встает только через reset?


"Почта не уходит из очереди Postfix"
Отправлено rr , 29-Апр-10 16:03 
что в maillogе после того как поравил пользователя?

"Почта не уходит из очереди Postfix"
Отправлено MAXOB , 29-Апр-10 16:10 
>что в maillogе после того как поравил пользователя?

вот пимер письма, вроде все неплохо...
Apr 29 16:07:41 www postfix/pickup[3266]: B9D845632EA: uid=1092 from=<makhov@neo-bit.ru>
Apr 29 16:07:41 www postfix/cleanup[2014]: B9D845632EA: message-id=<858282468.20100429160703@neo-bit.ru>
Apr 29 16:07:41 www postfix/pipe[17191]: 4B45A5632E8: to=<makhov@ssl.stu.neva.ru>, relay=myfilter, delay=14, status=sent (dummy)
Apr 29 16:07:41 www postfix/qmgr[16345]: B9D845632EA: from=<makhov@neo-bit.ru>, size=1395, nrcpt=1 (queue active)
Apr 29 16:07:41 www postfix/qmgr[16345]: 4B45A5632E8: removed
Apr 29 16:07:41 www postfix/local[30525]: B9D845632EA: to=<makhov@ssl.stu.neva.ru>, relay=local, delay=0, status=sent (delivered to mailbox)
Apr 29 16:07:41 www postfix/qmgr[16345]: B9D845632EA: removed

думаю, что проблема на этот раз с самим calmav'ом))


"Почта не уходит из очереди Postfix"
Отправлено rr , 29-Апр-10 16:15 
/usr/local/bin/clamscan -v -r --no-summary --stdout ${INSPECT_DIR}/in.$$>$INSPECT_DIR/vr.$$

А вот что допустимо

%clamdscan -h

                       ClamAV Daemon Client 0.96
           By The ClamAV Team: http://www.clamav.net/team
           (C) 2007-2009 Sourcefire, Inc.

    --help              -h             Show help
    --version           -V             Print version number and exit
    --verbose           -v             Be verbose
    --quiet                            Be quiet, only output error messages
    --stdout                           Write to stdout instead of stderr
                                       (this help is always written to stdout)
    --log=FILE          -l FILE        Save scan report in FILE
    --file-list=FILE    -f FILE        Scan files from FILE
    --remove                           Remove infected files. Be careful!
    --move=DIRECTORY                   Move infected files into DIRECTORY
    --copy=DIRECTORY                   Copy infected files into DIRECTORY
    --config-file=FILE                 Read configuration from FILE.
    --multiscan           -m           Force MULTISCAN mode
    --infected            -i           Only print infected files
    --no-summary                       Disable summary at end of scanning
    --reload                           Request clamd to reload virus database
    --fdpass                           Pass filedescriptor to clamd (useful if clamd is running as a different user)
    --stream                           Force streaming files to clamd (for debugging and unit testing)

%clamdscan -r
WARNING: Ignoring unsupported option --recursive (-r)

Что в логах clamd?


"Почта не уходит из очереди Postfix"
Отправлено MAXOB , 29-Апр-10 16:23 
>/usr/local/bin/clamscan -v -r --no-summary --stdout ${INSPECT_DIR}/in.$$>$INSPECT_DIR/vr.$$
>

думаете --stdout ${INSPECT_DIR}/in.$$>$INSPECT_DIR/vr.$$ может выдавать такие ошибки?
>
>Что в логах clamd?

в /var/log/calmd.log действительно нашел ошибку:

ERROR: Can't save PID in file /var/run/clamav/clamd.pid,

её упоправил, перезапустил clamav, в логах следующее:
+++ Started at Thu Apr 29 16:21:35 2010
clamd daemon 0.96 (OS: openbsd3.8, ARCH: i386, CPU: i386)
Log file size limited to 1048576 bytes.
Reading databases from /var/lib/clamav
Not loading PUA signatures.
Loaded 758797 signatures.
LOCAL: Unix socket file /tmp/clamd
LOCAL: Setting connection queue length to 15
Limits: Global size limit set to 104857600 bytes.
Limits: File size limit set to 26214400 bytes.
Limits: Recursion level limit set to 16.
Limits: Files limit set to 10000.
Archive support enabled.
Algorithmic detection enabled.
Portable Executable support enabled.
ELF support enabled.
Mail files support disabled.
OLE2 support enabled.
PDF support enabled.
HTML support enabled.
Self checking every 600 seconds.
WARNING: MaxThreads * MaxRecursion is too high: 160, open file descriptor limit is: 64
Set stacksize to 1048576


"Почта не уходит из очереди Postfix"
Отправлено MAXOB , 29-Апр-10 16:39 
ну вот опять, только все включил, сервер моментально (вернее минут через 10) повис, и опять при загрузке вылезло море процессов clamscan (вернее штук 5), опять катострофически убывал swap(

"Почта не уходит из очереди Postfix"
Отправлено rr , 29-Апр-10 16:43 
WARNING: MaxThreads * MaxRecursion is too high: 160, open file descriptor limit is: 64
может тут уменьшить?

"Почта не уходит из очереди Postfix"
Отправлено rr , 29-Апр-10 16:43 
что в логах clamd дальше?

"Почта не уходит из очереди Postfix"
Отправлено MAXOB , 29-Апр-10 16:51 
>что в логах clamd дальше?

Ничего, это конец логов.


"Почта не уходит из очереди Postfix"
Отправлено MAXOB , 29-Апр-10 16:54 
>что в логах clamd дальше?

вернее появилось еще вот это:
No stats for Database check - forcing reload
Reading databases from /var/lib/clamav
Database correctly reloaded (758797 signatures)
но по-моему тут ничего существенного.


"Почта не уходит из очереди Postfix"
Отправлено MAXOB , 29-Апр-10 16:49 
>WARNING: MaxThreads * MaxRecursion is too high: 160, open file descriptor limit
>is: 64
> может тут уменьшить?

И сколько лучше поставить?


"Почта не уходит из очереди Postfix"
Отправлено rr , 29-Апр-10 16:55 
у меня как по-умолчанию 10, но у меня через clamsmtpd
добавь в clamdscan опцию ----log=FILE

"Почта не уходит из очереди Postfix"
Отправлено MAXOB , 29-Апр-10 17:17 
>у меня как по-умолчанию 10, но у меня через clamsmtpd
>добавь в clamdscan опцию ----log=FILE

я так понял это именно произведение количества потоков, на количество рекурсий, уменьшил тот и другой параметры, действительно swap пока не грузится, спасибо за идею.