Postgrey

Недавно прикрутил к постфиксу - Postgrey. Эффект замечательный, спама не стало совсем.
в main.cf:

smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, check_policy_service inet:127.0.0.1:10030, permit

Но столкнулся с небольшой трудностью: он все события по собственно грейлистингу - типа:

Recipient address rejected: Greylisted for 300 seconds; from= to= proto=ESMTP helo=

  • воспринимает как ошибку - и плодит письма на эккаунт postmaster@… с сообщениями о том, дескать что изза грейлиста он не доставил сообщения! Он этими сообщениями просто замусоривает почтовый ящик - postmaster :frowning:
    Можно-ли как заставить postgrey - не слать уведомления постмастеру о своей текущей работе?

Попробуйте изменить

smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, check_policy_service inet:127.0.0.1:10030, permit

на

smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, check_policy_service inet:127.0.0.1:10030

Я убрал permit - но проблема не решилась:

Transcript of session follows.

 Out: 220 linux.cpms.ru ESMTP
 In:  EHLO [113.161.176.97]
 Out: 250-linux.cpms.ru
 Out: 250-PIPELINING
 Out: 250-SIZE 10240000
 Out: 250-ETRN
 Out: 250-ENHANCEDSTATUSCODES
 Out: 250-8BITMIME
 Out: 250 DSN
 In:  MAIL FROM:<roman@prokabeli.ru>
 Out: 250 2.1.0 Ok
 In:  RCPT TO: <sergey@linux.cpms.ru>
 Out: 450 4.2.0 <sergey@linux.cpms.ru>: Recipient address rejected: Greylisted
     for 300 seconds
 Out: 421 4.7.0 linux.cpms.ru Error: too many errors

Session aborted, reason: too many errors

Эти письма появляются за минуту по 20 штук. Ну сколько сервер переваривает, столько и плодит.

Вот что в логах:

 - Nov 24 13:22:57 calculate postfix/smtpd[2352]: connect from 200.175.61.26.static.gvt.net.br[200.175.61.26]
Nov 24 13:22:58 calculate postgrey[2457]: action=greylist, reason=new, client_name=200.175.61.26.static.gvt.net.br, client_address=200.175.61.26, sender=info@averell.com, recipient=sergey@linux.cpms.ru
Nov 24 13:22:58 calculate postfix/smtpd[2352]: NOQUEUE: reject: RCPT from 200.175.61.26.static.gvt.net.br[200.175.61.26]: 450 4.2.0 <sergey@linux.cpms.ru>: Recipient address rejected: Greylisted for 300 seconds; from=<info@averell.com> to=<sergey@linux.cpms.ru> proto=ESMTP helo=<200.175.61.26.static.gvt.net.br>
Nov 24 13:22:58 calculate postfix/smtpd[2352]: too many errors after RCPT from 200.175.61.26.static.gvt.net.br[200.175.61.26]
Nov 24 13:22:58 calculate postfix/cleanup[2355]: 984035874D: message-id=<20091124102258.984035874D@linux.cpms.ru>
Nov 24 13:22:58 calculate postfix/smtpd[2352]: disconnect from 200.175.61.26.static.gvt.net.br[200.175.61.26]
Nov 24 13:22:58 calculate postfix/qmgr[2345]: 984035874D: from=<double-bounce@linux.cpms.ru>, size=943, nrcpt=1 (queue active)
Nov 24 13:22:58 calculate postfix/local[2356]: 984035874D: to=<sergey@linux.cpms.ru>, orig_to=<postmaster>, relay=local, delay=0.03, delays=0.01/0/0/0.02, dsn=2.0.0, status=sent (delivered to command: /usr/bin/procmail -m /etc/procmailrc)
Nov 24 13:22:58 calculate postfix/qmgr[2345]: 984035874D: removed
Nov 24 13:23:25 calculate postfix/smtpd[2460]: connect from unknown[217.67.190.178]
Nov 24 13:23:25 calculate postgrey[2457]: action=greylist, reason=new, client_name=unknown, client_address=217.67.190.178, sender=johan.knitel@datarius.com, recipient=jet@linux.cpms.ru

А как у вас сделано? Может у вас грейлист по другому прикручен?
Вот мой конфиг:

queue_directory = /var/spool/postfix

command_directory = /usr/sbin
on_directory = /usr/lib/postfix

data_directory = /var/lib/postfix

mail_owner = postfix
unknown_local_recipient_reject_code = 550

debug_peer_level = 2
debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         ddd $daemon_directory/$process_name $process_id & sleep 5

sendmail_path = /usr/sbin/sendmail

newaliases_path = /usr/bin/newaliases

mailq_path = /usr/bin/mailq

setgid_group = postdrop

html_directory = no

manpage_directory = /usr/share/man

sample_directory = /etc/postfix

readme_directory = no
myhostname = linux.cpms.ru
mydestination = $myhostname, localhost.$mydomain, $mydomain
virtual_alias_maps = ldap:/etc/postfix/ldap-aliases.cf, ldap:/etc/postfix/ldap-aliases-gr.cf
mynetworks = 1xx.1x.x.0/24, 127.0.0.0/8
alias_maps = hash:/etc/mail/aliases
alias_database = hash:/etc/mail/aliases
local_recipient_maps = ldap:/etc/postfix/ldap-recipient.cf, ldap:/etc/postfix/ldap-recipient-gr.cf
empty_address_recipient = MAILER-DAEMON
queue_minfree = 200000000
message_size_limit = 100000000
mailbox_size_limit = 1000000000
smtpd_banner = $myhostname ESMTP
local_destination_concurrency_limit = 2
default_destination_concurrency_limit = 20
disable_vrfy_command = yes
show_user_unknown_table_name = no
smtpd_delay_reject = yes
maximal_queue_lifetime = 3h
bounce_queue_lifetime = 1h
notify_classes = protocol, resource, software
mailbox_command = /usr/bin/procmail -m /etc/procmailrc

 # Отклонять команду ETRN
smtpd_etrn_restrictions = reject

 # Запретить исходящую почту с наших доменов, но с несуществующих у нас адресов
smtpd_reject_unlisted_sender = yes

 # Запретить письма для неизвестных адресов получателей
smtpd_reject_unlisted_recipient = yes

 # Отключает SMTP команду VRFY. В результате чего, невозможно определить существование определенного ящика. 
#Данная техника (применение команды VRFY) используется спамерами для сбора имен почтовых ящиков.
disable_vrfy_command = yes

 # Требует команды helo от подсоединившихся клиентов
smtpd_helo_required = yes

 # требует окружать полученные в MAIL FROM и RCPT TO адреса угловыми скобками <>, а также, чтобы они не содержали лишних фраз
strict_rfc821_envelopes = yes

 # Всегда отправлять EHLO вначале SMTP сессии
smtp_always_send_ehlo = yes

 # Ожидание до RCPT TO перед выяснением smtpd_client_restrictions, smtpd_helo_restrictions и smtpd_sender_restrictions
 # или до ETRN перед выяснением smtpd_client_restrictions, smtpd_helo_restrictions. 
 # Такое поведение еще обеспечивает лучшую читаемость логов.
smtpd_delay_reject = yes

 # Максимальное количество ошибок, которое может сделать удаленный SMTP клиент. При превышение данного числа Postfix отсоединится.
smtpd_hard_error_limit = 1

 # Интервал времени в течение которого SMTP сервер Postfix должен послать ответ, а удаленный SMTP клиент получить запрос
smtpd_timeout = 30s

 # Интервал времени, в течение которого SMTP клиент должен послать SMTP команду HELO или EHLO и получить ответ сервера.
smtp_helo_timeout = 15s

 # Интервал времени, в течение которого SMTP клиент должен послать SMTP команду RCPT TO и получить ответ сервера.
smtp_rcpt_timeout = 15s

 # ограничение на количество одновременных получателей письма, по умолчанию 1000 :)
smtpd_recipient_limit = 40

 # Время хранения в очереди боунсов
bounce_queue_lifetime = 1d

 # Время хранения в очереди обычных писем, может принимать значения: s (seconds), m (minutes), h (hours), d (days), w (weeks).
maximal_queue_lifetime = 3d

 # Минимальный интервал повторной отправки писем (если получатели использую грейлистинг небольшое значение этого интервала 
 # позволяет немного уменьшить очередь, по умолчанию здесь слишком большое значение в 4000s)
minimal_backoff_time = 180s

 # Максимальный интервал повторной отправки писем. Письма которые уже давно лежат в очереди будут повторно 
 # отправляться раз в 6 часов. По умолчанию здесь наоборот маленькое значение.
maximal_backoff_time = 6h



#MyEdit
#smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, check_policy_service inet:127.0.0.1:10030
#smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, check_policy_service inet:127.0.0.1:10030, permit
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, check_policy_service inet:127.0.0.1:10030

Как вариант можно попробовать отключить greylist

smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, check_policy_service

Если ошибки пропали значит что-то с greylist не так

Как вариант можно попробовать отключить greylist

smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, check_policy_service

Если ошибки пропали значит что-то с greylist не так

Не, проблема не в грейлисте. Проблема тут:

smtpd_hard_error_limit = 1

Почему-то в дебиане отконнектчивание постфикса не воспринимается как ошибка. А в генте на это идет ругань. Хотя это неплохо спасает от DDOS атак.
Я пока отключил эту строчку.

Вот сейчас еще спамассассин пытаюсь прикрутить к master.cf
Всетаки грей-листа мало. Пролезает спам.

На работе грейлист и спамассассин - лучше показатели. Там если 1-2 спама за день придет - то это уже кощмар! :slight_smile: