почтовая команда: фильтр контента в постфиксных работах?

Я использую Постфикс в своей машине (Linux).

Когда я отправляю почту локальному пользователю с telnet localhost 25 в командной строке, моя почта анализируется фильтром контента (например: spamassassin) => без проблем.

Но когда я отправляю почту тому же локальному пользователю с почтовой командой (или команда sendmail или почта php), моя почта отправляется, но не анализируется фильтром контента => итак, почему?

Почему моя почта не анализируется фильтром контента, когда я использую почтовую команду?

Моя постфиксная конфигурация является очень простой:

postconf-n:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
html_directory = /usr/share/doc/postfix/html
inet_interfaces = all
mailbox_size_limit = 0
mydestination = localhost.localdomain, localhost, localhost.localdomain, localhost
myhostname = localhost
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
recipient_delimiter = +
relayhost =
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)

postconf-M:

smtp       inet  n       -       n       -       -       smtpd -o content_filter=spamassassin
pickup     fifo  n       -       -       60      1       pickup
cleanup    unix  n       -       -       -       0       cleanup
qmgr       fifo  n       -       n       300     1       qmgr
tlsmgr     unix  -       -       -       1000?   1       tlsmgr
rewrite    unix  -       -       -       -       -       trivial-rewrite
bounce     unix  -       -       -       -       0       bounce
defer      unix  -       -       -       -       0       bounce
trace      unix  -       -       -       -       0       bounce
verify     unix  -       -       -       -       1       verify
flush      unix  n       -       -       1000?   0       flush
proxymap   unix  -       -       n       -       -       proxymap
proxywrite unix  -       -       n       -       1       proxymap
smtp       unix  -       -       -       -       -       smtp
relay      unix  -       -       -       -       -       smtp
showq      unix  n       -       -       -       -       showq
error      unix  -       -       -       -       -       error
retry      unix  -       -       -       -       -       error
discard    unix  -       -       -       -       -       discard
local      unix  -       n       n       -       -       local
virtual    unix  -       n       n       -       -       virtual
lmtp       unix  -       -       -       -       -       lmtp
anvil      unix  -       -       -       -       1       anvil
scache     unix  -       -       -       -       1       scache
maildrop   unix  -       n       n       -       -       pipe flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
uucp       unix  -       n       n       -       -       pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail     unix  -       n       n       -       -       pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp      unix  -       n       n       -       -       pipe flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix - n       n       -       2       pipe flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman    unix  -       n       n       -       -       pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}
spamassassin unix -      n       n       -       -       pipe user=mail argv=/usr/bin/spamc -u ${user} -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

Я повторяю свою проблему: когда я использую telnet localhost 25, чтобы отправить почту локальному пользователю (гость), spamassassin анализируют почту и дисплеи системного журнала:

Feb  4 15:05:42 localhost postfix/smtpd[3919]: connect from localhost[::1]
Feb  4 15:05:50 localhost postfix/smtpd[3919]: EBC2460DBF: client=localhost[::1]
Feb  4 15:05:59 localhost postfix/cleanup[3922]: EBC2460DBF: message-id=<20150204140550.EBC2460DBF@localhost>
Feb  4 15:05:59 localhost postfix/qmgr[3883]: EBC2460DBF: from=<guest@localhost.localdomain>, size=342, nrcpt=1 (queue active)
Feb  4 15:05:59 localhost spamd[18634]: spamd: connection from localhost [127.0.0.1] at port 48540
Feb  4 15:05:59 localhost spamd[18634]: spamd: processing message <20150204140550.EBC2460DBF@localhost> for guest:122
Feb  4 15:06:08 localhost spamd[18634]: spamd: clean message (0.2/5.0) for guest:122 in 9.1 seconds, 296 bytes.
Feb  4 15:06:08 localhost spamd[18634]: spamd: result: . 0 - ALL_TRUSTED,MISSING_HEADERS scantime=9.1,size=296,user=guest,uid=122,required_score=5.0,rhost=localhost,raddr=127.0.0.1,rport=48540,mid=<20150204140550.EBC2460DBF@localhost>,autolearn=ham
Feb  4 15:06:08 localhost spamd[18632]: prefork: child states: II
Feb  4 15:06:08 localhost postfix/pickup[3881]: 6844560FDB: uid=8 from=<guest@localhost.localdomain>
Feb  4 15:06:08 localhost postfix/pipe[3923]: EBC2460DBF: to=<guest@localhost.localdomain>, orig_to=<guest>, relay=spamassassin, delay=22, delays=12/0.01/0/9.2, dsn=2.0.0, status=sent (delivered via spamassassin service)
Feb  4 15:06:08 localhost postfix/qmgr[3883]: EBC2460DBF: removed
Feb  4 15:06:08 localhost postfix/cleanup[3922]: 6844560FDB: message-id=<20150204140550.EBC2460DBF@localhost>
Feb  4 15:06:08 localhost postfix/qmgr[3883]: 6844560FDB: from=<guest@localhost.localdomain>, size=656, nrcpt=1 (queue active)
Feb  4 15:06:08 localhost postfix/local[3928]: 6844560FDB: to=<guest@localhost.localdomain>, relay=local, delay=0.18, delays=0.12/0.01/0/0.05, dsn=2.0.0, status=sent (delivered to mailbox)
Feb  4 15:06:08 localhost postfix/qmgr[3883]: 6844560FDB: removed

=> без проблем.

Но если я использую просто почтовую команду:

echo "test" | mail -s "test" guest 

, почта отправляется, но spamassassin не проанализировал почту, потому что системный журнал отображает это:

Feb  4 15:09:36 localhost postfix/pickup[3881]: B6C1960DC0: uid=1000 from=<guest>
Feb  4 15:09:36 localhost postfix/cleanup[3956]: B6C1960DC0: message-id=<20150204140936.B6C1960DC0@localhost>
Feb  4 15:09:36 localhost postfix/qmgr[3883]: B6C1960DC0: from=<guest@localhost.localdomain>, size=339, nrcpt=1 (queue active)
Feb  4 15:09:36 localhost postfix/local[3957]: B6C1960DC0: to=<guest@localhost.localdomain>, orig_to=<guest>, relay=local, delay=0.18, delays=0.12/0/0/0.07, dsn=2.0.0, status=sent (delivered to mailbox)
Feb  4 15:09:36 localhost postfix/qmgr[3883]: B6C1960DC0: removed

Идея?

Спасибо, сердечно.

2
задан 4 February 2015 в 16:20
1 ответ

Для фильтра содержимого после очереди postfix имеет два метода реализации: простой и расширенный фильтр содержимого. Вы можете прочитать объяснение обоих методов в официальной документации .

Из вашего вопроса мы можем узнать, что вы используете простой метод фильтрации содержимого. Знак выводится из postconf -M (или из содержимого master.cf ). Он использует метод канала для передачи электронной почты убийце спама с помощью команды

/usr/bin/spamc -u ${user} -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

. Официальные документы Postfix выше также сообщают вам об основных ограничениях простого фильтра содержимого

. Первый пример прост в настройке, но имеет серьезные ограничения, которые будут быть рассмотрено во втором примере. Postfix получает нефильтрованную почту из сети с помощью сервера smtpd (8) и доставляет нефильтрованную почту в фильтр содержимого с помощью агента доставки Postfix pipe (8). Фильтр содержимого вводит отфильтрованную почту обратно в Postfix с помощью команды Postfix sendmail (1), так что Postfix может доставить ее в конечный пункт назначения.

Это означает, что почту, отправленную с помощью команды Postfix sendmail (1), нельзя фильтровать по содержимому.

Итак, поведение, которое вы видите, было нормальным.

Решение: Как я могу использовать content_filter для электронной почты, отправленной с помощью команды mail?

Вы можете переключить свою настройку на использование расширенного метода фильтрации содержимого. Эта ветка в списке рассылки спам-убийц предлагает вам альтернативу для достижения этой цели: amavisd или spampd

2
ответ дан 3 December 2019 в 11:39

Теги

Похожие вопросы