LINUX.ORG.RU

Postfix+Fetchmail+Procmail+Spamassassin


0

0

Здравствуйте Раньше у меня стоял Sendmail+Fetchmail+Procmail+Spamassassin Все работало нормально. Письма Fetchmail принимал, отдавал procmail, а он отдавал Spamassassin и дальше если письмо spam, то оно попадало в файл /var/mail/spam, если не spam то в папку /var/mail/inbox Я мог посмотреть в файле procmail.log, что принял fetchmail. После замены sendmail на postfix весь spam встает в очередь postfix на отправку, а в файле procmail.log не попадает информация о приеме spam, а остается информация только о нормальных письмах. Где то неправильно настроена связка этих программ. Привожу конфиги. Файл .fetchmailrc poll pop3.mail.ru proto pop3 user "user" with pass "1111" mda "/usr/bin/procmail -d%T" fetchall Файл .procmailrc MAILDIR=/var/mail DEFAULT=$MAILDIR/inbox LOGFILE=$HOME/procmail.log :0fw: spamassasin.lock *<256000 |/usr/bin/spamassassin :0: *^X-Spam-Status: Yes spam :0 *^(From|To):.*root@* root Файл local.cf trusted_networks 192.168/16 127/8 whitelist_from localhost rewrite_subject 1 subject_tag ***SPAM***_HITS*** required_hits 4 report_safe 0 use_terse_report 0 use_bayes 1 auto_learn 1 skip_rbl_checks 0 use_razor2 0 use_dcc 0 use_pyzor 0 always_add_report 1 use_auto_whitelist 1 auto_whites_path /etc/mail/spamassassin/auto_whitelist bayes_path /etc/mail/spamassassin/bayes ok_languages ru en ok_locales ru en report_charset windows-1251 lang ru score FROM_ILLEGAL_CHARS 1.5 score HEAD_ILLEGAL_CHARS 1.5 score SUBJ_ILLEGAL_CHARS 1.5 Файл main.cf alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases biff = yes bounce_size_limit = 2000 command_directory = /usr/sbin config_directory = /etc/postfix daemon_directory = /usr/libexec/postfix debug_peer_level = 9 disable_dns_lookups = yes disable_vrfy_command = yes html_directory = no inet_interfaces = localhost, 192.168.1.5 local_recipient_maps = unix:passwd.byname $alias_maps local_transport = local mail_owner = postfix mailq_path = /usr/bin/mailq.postfix manpage_directory = /usr/share/man message_size_limit = 2048000 mydestination = $myhostname, localhost mydomain = lab.ru myhostname = Test.lab.ru mynetworks = 192.168.1.0/24, 127.0.0.0/8 myorigin = $myhostname newaliases_path = /usr/bin/newaliases.postfix queue_directory = /var/spool/postfix readme_directory = no sample_directory = /usr/share/doc/postfix-2.1.5/samples sendmail_path = /usr/sbin/sendmail.postfix setgid_group = postdrop strict_rfc821_envelopes = yes unknown_local_recipient_reject_code = 550

anonymous

Здравствуйте
Раньше у меня стоял Sendmail+Fetchmail+Procmail+Spamassassin
Все работало нормально. Письма Fetchmail принимал, отдавал procmail, а он отдавал Spamassassin и дальше если письмо spam, то оно попадало в файл /var/mail/spam, если не spam то в папку /var/mail/inbox
Я мог посмотреть в файле procmail.log, что принял fetchmail.

После замены sendmail на postfix весь spam встает в очередь postfix на отправку, а в файле procmail.log не попадает информация о приеме spam, а остается информация только о нормальных письмах. Где то неправильно настроена связка этих программ. Привожу конфиги.

Файл .fetchmailrc
poll pop3.mail.ru proto pop3
user "user" with pass "1111"
mda "/usr/bin/procmail -d%T"
fetchall

Файл .procmailrc
MAILDIR=/var/mail
DEFAULT=$MAILDIR/inbox
LOGFILE=$HOME/procmail.log
:0fw: spamassasin.lock
*<256000
|/usr/bin/spamassassin
:0:
*^X-Spam-Status: Yes
spam
:0
*^(From|To):.*root@*
root

Файл local.cf
trusted_networks 192.168/16 127/8
whitelist_from localhost
rewrite_subject 1
subject_tag ***SPAM***_HITS***
required_hits 4
report_safe 0
use_terse_report 0
use_bayes 1
auto_learn 1
skip_rbl_checks 0
use_razor2 0
use_dcc 0
use_pyzor 0
always_add_report 1
use_auto_whitelist 1
auto_whites_path /etc/mail/spamassassin/auto_whitelist
bayes_path /etc/mail/spamassassin/bayes
ok_languages ru en
ok_locales ru en
report_charset windows-1251
lang ru
score FROM_ILLEGAL_CHARS 1.5
score HEAD_ILLEGAL_CHARS 1.5
score SUBJ_ILLEGAL_CHARS 1.5

Файл main.cf
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
biff = yes
bounce_size_limit = 2000
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
debug_peer_level = 9
disable_dns_lookups = yes
disable_vrfy_command = yes
html_directory = no
inet_interfaces = localhost, 192.168.1.5
local_recipient_maps = unix:passwd.byname $alias_maps
local_transport = local
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
message_size_limit = 2048000
mydestination = $myhostname, localhost
mydomain = lab.ru
myhostname = Test.lab.ru
mynetworks = 192.168.1.0/24, 127.0.0.0/8
myorigin = $myhostname
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = no
sample_directory = /usr/share/doc/postfix-2.1.5/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
strict_rfc821_envelopes = yes
unknown_local_recipient_reject_code = 550

anonymous
()
Ответ на: комментарий от anonymous

Надо добавить в /etc/postfix/main.cf

mailbox_command = /usr/bin/procmail -a "$EXTENSION"

VPF
()
Ответ на: комментарий от anonymous

Рекомендую дополнить всё это связкой Clamav + Clamassassin.

В procmailrc на первое место прописать правило для Clamassassin аналогичное правилу для Spamassassin

VPF
()
Ответ на: комментарий от VPF

Тогда вопросы
1) У меня fetchmail получает почту и передает ее procmail, далее она идет к spamassassin и попадает postfix, далее локальная почта снова идет на procmail. Так чтоли работает или нет?

2) У меня есть файл .procmailrc к нему procmail обращается один раз или дважды после fetchmail и после postfix?

3) Не нашел описания по строчке
procmail -a "$EXTENSION"
что значит $EXTENSION

4) В моем случае не лучше ли обращаться к spamassassin из postfix
(у меня обращается из файла .procmailrc к spamassassin)

5) На счет Clamav + Clamassassin спасибо попробую

anonymous
()
Ответ на: комментарий от anonymous

> У меня fetchmail получает почту и передает ее procmail, далее она идет к spamassassin и попадает postfix, далее локальная почта снова идет на procmail. Так чтоли работает или нет?

Что-то мы с тобой запутались. Давай разбираться. У меня Fetchmail и Postfix принимают разную почту. Postfix смотрит во внешний мир и принимает всю почту на наш домен, затем передаёт её Procmail для сортировки по правилам и разброски по ящикам пользователей. Fetchmail у меня принимает почту с нескольких бесплатных ящиков (rambler.ru, mail.ru) и также её передаёт для сортировки Procmail.

У тебя, как я понял, только Fetchmail принимает почту, а Postfix отвечает за отправку почты. Уточни вашу схему в целом.

VPF
()
Ответ на: комментарий от anonymous

Непонятно, почему почта после Procmail направляется Postfix? Она должна после проверки фильтрами и сортировки по правилам раскладываться по ящикам пользователей.

VPF
()
Ответ на: комментарий от anonymous

Я предполагаю, что у тебя файл procmailrc находится в каталоге root. Файлы fetchmailrc и procmailrc должны находиться в /etc (причём убери точку в начале имён и настрой права доступа правильно), тогда они будут глобальными.

VPF
()
Ответ на: комментарий от VPF

Все правильно у меня fetchmail только забирает почту с бесплатных ящиков, а postfix только отправляет. Файлы .fetchmailrc и .procmailrc у root в домашнем каталоге. Я перенесу файлы в /etc (fetchmailrc и procmailrc и настрою права). Тогда у меня в файле fetchmailrc есть строка

mda "/usr/bin/procmail -d%T"

т.е. отдавать почту procmail
как быть с этим?

Я задавал выше вопросы 3 и 4 как быть?

anonymous
()
Ответ на: комментарий от anonymous

Я создал файлы fetchmailrc и procmailrc в /etc
установил на эти файлы доступ 600
из файла fetchmailrc убрал mda "/usr/bin/procmail -d%T"
по документации fetchmail будет использовать MDA
по умолчанию, значит мой postfix.

В main.cf добавил mailbox_command = /usr/bin/procmail -a "$EXTENSION"
(не знаю что такое $EXTENSION)

В procmailrc стоит

LOGFILE = /tmp/procmail.log

но ни какой информации в лог файл не попадает. Почему?

И еще надо ли прописывать в master.cf строчку с procmail?

anonymous
()
Ответ на: комментарий от anonymous

> mda "/usr/bin/procmail -d%T"

Это остаётся.

> 3) Не нашел описания по строчке procmail -a "$EXTENSION" что значит $EXTENSION

Тебе это не надо, так как сам Postfix у тебя почту не принимает

> 4) В моем случае не лучше ли обращаться к spamassassin из postfix (у меня обращается из файла .procmailrc к spamassassin)

Ещё раз описываю всю схему:

1) Fetchmail принимает почту и передаёт её Procmail (для этого прописывается в файле /etc/fetchmailrc команда ->

mda "/usr/bin/procmail -d %T"

2) Procmail пропускает всю принятую почту (от Fetchmail) через Clamassassin и Spamassassin. Для этого в файле /etc/procmailrc прописываются правила для них. У меня выглядит так:

:0fw

| /usr/local/bin/clamassassin

:0:

* ^X-Virus-Status: Yes

/dev/null

:0fw

| spamassassin

:0:

* ^X-Spam-Status: Yes

/dev/null

Затем следуют письма сортируются по пользователям и раскладываются по их ящикам правилами:

:0

* ^X-Original-To.*info@domen.ru

info

:0

* ^X-Original-To.*director@domen.ru

director

...

:0

* ^Subject:.*

spam

3) Postfix только отправляет почту, поэтому с Clamassassin и Spamassasin вообще не взаимодействует в твоём варианте.

VPF
()
Ответ на: комментарий от anonymous

Я поторопился с ответом буду проверять выше сказанное

anonymous
()
Ответ на: комментарий от anonymous

> Я создал файлы fetchmailrc и procmailrc в /etc установил на эти файлы доступ 600 из файла fetchmailrc убрал mda "/usr/bin/procmail -d%T"

верни назад

> В main.cf добавил mailbox_command = /usr/bin/procmail -a "$EXTENSION"

Удали эту строчку

Подробно я расписал в предыдущем ответе

VPF
()
Ответ на: комментарий от anonymous

> Все сделал

> Почему у меня не заполняется файл procmail.log

> В /etc/procmailrc у меня LOGFILE=/tmp/procmail.log

А вообще вся эта почтовая кухня сейчас работает у тебя?

У меня в Mandrake так прописано ->

LOGFILE=/var/log/mail/procmail

Кроме этого прописано ->

LOCKFILE=$MAILDIR/.lockmail

Надо проверить все пути и наличие самих файлов. Посмотреть /var/log/syslog (если, конечно, файлы логов в /var/log/)

А также /var/log/mail/info (или другое расположение)

Я для удобства открываю несколько консолей и в реальном времени просматриваю логи. Для этого в каждой консоли с правами root необходимо выполнить ->

tail -f /var/log/syslog (уточнить расположение)

tail -f /var/log/mail/procmail (уточнить расположение)

и т.д.

Посмотри, что пишется в логи

VPF
()
Ответ на: комментарий от VPF

Файл procmail.log заполняется, но только письмами не относящимися к спаму. Весь принятый spam не записывается в файл procmail.log (раньше когда стоял sendmail, все принятые письма fetchmail записывались в файл procmail.log и spamassassin их разгребал и складывал в файл spam). Теперь весь spam встает на отправку в очередь postfix. Почему?

P.S. все конфиги приведены выше - local.cf, main.cf

anonymous
()
Ответ на: комментарий от VPF

Вот что показывает mailq

-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
5712593F81 4015 Thu May 25 16:53:29 MAILER-DAEMON
(connect to belice.com[206.207.85.33]: Connection refused)
okay@belice.com

401A593F80 4042 Thu May 25 16:17:05 MAILER-DAEMON
(connect to artesmarciales.com[206.207.85.33]: Connection refused)
dat@artesmarciales.com

А вот что maillog
May 25 16:17:05 TEST postfix/cleanup[7122]: 401A593F80: message-id=<20060525101705.401A593F80@TEST.lab.ru>
May 25 16:17:05 TEST postfix/qmgr[6832]: 401A593F80: from=<>, size=4042, nrcpt=1 (queue active)
May 25 16:17:12 TEST postfix/smtp[7123]: connect to artesmarciales.com[206.207.85.33]: Connection refused (port 25)
May 25 16:17:12 TEST postfix/smtp[7123]: 401A593F80: to=<dat@artesmarciales.com>, relay=none, delay=7, status=deferred (connect to artesmarciales.com[206.207.85.33]: Connection refused)
May 25 16:27:21 TEST postfix/smtpd[7129]: connect from localhost.localdomain[127.0.0.1]
May 25 16:27:27 TEST postfix/cleanup[7131]: 27AC193F81: message-id=<20060525102727.27AC193F81@TEST.lab.ru>
May 25 16:27:27 TEST postfix/qmgr[6832]: 27AC193F81: from=<>, size=4019, nrcpt=1 (queue active)
May 25 16:27:27 TEST postfix/smtp[7132]: 27AC193F81: to=<tatyana_baranova@mmtel.ru>, relay=none, delay=0, status=bounced ([mmtel.ru]: Name or service not known)
May 25 16:27:27 TEST postfix/qmgr[6832]: 27AC193F81: removed
May 25 16:27:29 TEST postfix/smtpd[7129]: disconnect from localhost.localdomain[127.0.0.1]
May 25 16:34:39 TEST postfix/qmgr[6832]: 401A593F80: from=<>, size=4042, nrcpt=1 (queue active)
May 25 16:34:40 TEST postfix/smtp[7142]: connect to artesmarciales.com[206.207.85.33]: Connection refused (port 25)
May 25 16:34:40 TEST postfix/smtp[7142]: 401A593F80: to=<dat@artesmarciales.com>, relay=none, delay=1055, status=deferred (connect to artesmarciales.com[206.207.85.33]: Connection refused)
May 25 16:37:45 TEST postfix/smtpd[7144]: connect from localhost.localdomain[127.0.0.1]
May 25 16:37:54 TEST postfix/smtpd[7144]: disconnect from localhost.localdomain[127.0.0.1]
May 25 16:37:56 TEST postfix/cleanup[7145]: 9861393F81: message-id=<20060525103756.9861393F81@TEST.lab.ru>
May 25 16:37:56 TEST postfix/qmgr[6832]: 9861393F81: from=<>, size=3995, nrcpt=1 (queue active)
May 25 16:37:58 TEST postfix/smtp[7146]: 9861393F81: to=<krass@lakaka.net>, relay=lakaka.net[204.11.98.18], delay=2, status=bounced (host lakaka.net[204.11.98.18] said: 501 Wrong syntax (in reply to MAIL FROM command))
May 25 16:37:58 TEST postfix/qmgr[6832]: 9861393F81: removed
May 25 16:53:23 TEST postfix/smtpd[7174]: connect from localhost.localdomain[127.0.0.1]
May 25 16:53:30 TEST postfix/cleanup[7176]: 5712593F81: message-id=<20060525105329.5712593F81@TEST.lab.ru>
May 25 16:53:30 TEST postfix/qmgr[6832]: 5712593F81: from=<>, size=4015, nrcpt=1 (queue active)
May 25 16:53:30 TEST postfix/smtp[7177]: connect to belice.com[206.207.85.33]: Connection refused (port 25)
May 25 16:53:30 TEST postfix/smtp[7177]: 5712593F81: to=<okay@belice.com>, relay=none, delay=1, status=deferred (connect to belice.com[206.207.85.33]: Connection refused)
May 25 16:53:33 TEST postfix/smtpd[7174]: disconnect from localhost.localdomain[127.0.0.1]

anonymous
()
Ответ на: комментарий от anonymous

Да...

У тебя Postfix не работает, он же не настроен. Надо было начинать с него, а потом уж разбираться с остальным. И что это за адреса? Может твой комп уже пытаются использовать для отправки вирусы или спамеры? Не знаю как у вас там сеть устроена, контролируешь ли ты её?

Надо бы посмотреть ешё файл syslog. Должен быть такой, там вся основная информация.

Я могу выложить свой конфиг Postfix, но у нас свой почтовый домен и он сам принимает и отправляет почту напрямую.

В твоём конфиге очевидны ошибки.

VPF
()
Ответ на: комментарий от VPF

Я выяснил что в очередь spam попадает после запуска fetchmail
машина работала 2-а дня без fetchmail и в очереди не было spam, после приема spam программой fetchmail он сразу встает на отправку.
Когда работал sendmail вместо postfix я 3 года не видел в очереди на отправку писем, но у меня sendmail отправлял почту только локально.

Файл syslog у меня в следующих каталогах
/etc/rc.d/init.d/syslog
/etc/syscinfig.d/syslog
/etc/logrotate.d/syslog
/var/lock/syslog

больше на машине нет файлов syslog, я их посмотрел нигде нет статистики

Мой main.cf приведен выше
Хотелось бы посмотреть на ваш работающий main.cf и master.cf

anonymous
()
Ответ на: комментарий от anonymous

Не могу понять какая связь между приёмом писем и их отправкой. Каждая программа выполняет свою функцию.

Вряд ли было целесообразно ломать работающую почтовую систему не разобравшись с новой.

Для полной ясности необходимо знать вашу задачу по организации почтовой системы. Какая сеть, какие серверы, откуда получаете, куда отправляете, кто клиенты и т.д.

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

Кстати, следовало бы сообщить также версию вашего дистрибутива Linux.

VPF
()
Ответ на: комментарий от VPF

Спасибо
Очень хочется настроить почтовый сервер

Дистрибутив Fedora Core3, postfix-2.1.5-2.2, fetchmail-6.2.5-6, spamassassin-3.0.0-3, procmail-3.22-14
Ничего ломать я не стал, передомной стоит задача настроить почтовый сервер для отправки и приема писем. Так как на сервере стояла по умолчанию программа sendmail (настройки все по умолчанию, отправка и прием писем только локально), то посмотрем инормацию по форумам, я принял решение, что проще разобраться и настроить почтовую программу postfix. C fetchmail, procmail, spamassassin вроде все просто и понятно, у postfix очень много настроек. Вот и сменил sendmail на postfix.
Пока хочу добится чтобы почта только принималась из Интернет, проверялась на spam и раскладывалась по пользователям.

Как я себе представляю, то у меня должно работать так:

Fetchmail будет забирать почту с ящиков mail.ru, yandex.ru и отдает эту почту для разборки procmail, который отправит всю принятую почту на spamassassin и разложит по пользователям (весь помеченный spam отложит в отдельный файл - для контроля).
Postfix пока не разберусь будет принимать и отправлять почту локальную. Взял стандартный конфиг у postfix и немножко внес корективы. Я заметил если не работает прием почты через fetchmail, то почта локальная нормально ходит, в логах ошибок нет. Но как только запускаю fetchmail и он принимает спам, то этот спам через локальный интерфейс встает в очередь на отправку mailq (пока у меня отправка в Интернет не настроена, то весь spam и не уходит, а стоит в очереди)

Я так понимаю связка fetchmail+procmail+spamassassin работала при sendmail корректно, а при postfix нет, то надо исправлять конфиг postfix или я не прав.

Postfix тоже принимает участие когда принимает почту fetchmail.
Вот и бьюсь над задачей, пока хочу настроить нормальный прием почты из Интернет и чтобы работала связка postfix+fetchmail+procmail+spamassassin

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.