Postgrey - "серые списки" для Postfix

  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:6f32bcabbed92e5aea4c6f5e93fee4e3' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtejustify\">Postgrey (Postfix Greylisting Policy Server) - решение на Perl реализации технологии <a href=\"http://muff.kiev.ua/content/greylisting-pora-poznakomitsya-s-tekhnologiei-serykh-spiskov\"><strong>Greylisting</strong></a> для <strong>MTA Postfix</strong>.</p>\n<p class=\"rtejustify\">Собственно говоря, Greylisting уже давно использую на корпоративных почтовых серверах. Но там в качестве <strong>MTA</strong> используется <strong>Exim</strong>. Сегодня знакомый пожаловался,&nbsp;что увеличилось количество приходящего спама&nbsp;на почтовые ящики в&nbsp;некоторых &nbsp;доменах. Эти домены я не так давно перенес на отдельный сервер,&nbsp;чтобы отделить грешное от праведного,&nbsp;тоесть клиентские данные от корпоративных.</p>\n<p class=\"rtejustify\">На этом сервере в качестве <strong>MTA</strong> используется <strong>Postfix</strong>. Ряд дополнительных проверок уже установлен. Теперь дело за малым - включить поддержку Greylisting. Итак, по вышеуказанной ссылке можно узнать, как работает технология &quot;серых списков&quot;. Поэтому не будем тратить время на описание технологии, а сразу приступим к настройке. Выполним установку Postgrey из системы портов:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td class=\"rtejustify\"># <strong>cd /usr/ports/mail/postgrey/ &amp;&amp; make install clean &amp;&amp; rehash</strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">&nbsp;Следующим шагом добавляем поддержку Postgrey при загрузке:</p>\n<p class=\"rtejustify\">\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p class=\"rtejustify\"># <strong>echo \'# Postfix Greylisting\' &gt;&gt; //etc/rc.conf<br />\n </strong>#&nbsp;<strong>echo \'postgrey_enable=&quot;YES&quot;\' &gt;&gt; /etc/rc.conf&nbsp;</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n</p>\n<p class=\"rtejustify\">Запускаем службу:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td class=\"rtejustify\"><strong># sh /usr/local/etc/rc.d/postgrey start</strong><br />\n Starting postgrey.</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Далее,&nbsp;следуя инструкциям,&nbsp;приступаем к редактированию конфигурационного файла Postfix&nbsp;- <strong>main.cf</strong>. Необходимо в параметр <strong>smtpd_recipient_restrictions</strong> сразу после&nbsp;<strong>reject_unauth_destination</strong>&nbsp;добавить опцию <strong>check_policy_service inet:127.0.0.1:10023</strong>. Навожу пример моего параметра <strong>smtpd_recipient_restrictions:</strong>&nbsp;</p>\n<p class=\"rtejustify\">\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td class=\"rtejustify\">\n<pre>\nsmtpd_recipient_restrictions =\n permit_mynetworks,\n permit_sasl_authenticated,\n reject_unknown_client,\n reject_unknown_hostname,\n reject_unknown_sender_domain,\n reject_unverified_sender,\n reject_non_fqdn_hostname,\n reject_non_fqdn_sender,\n reject_non_fqdn_recipient,\n reject_unauth_destination,\n check_policy_service inet:127.0.0.1:10023,\n reject_unauth_pipelining,\n reject_unlisted_recipient,\n reject_invalid_hostname</pre></td>\n</tr>\n</tbody>\n</table>\n</p>\n<p class=\"rtejustify\">Также следует обратить внимание на следующие&nbsp;файлы:</p>\n<ul>\n<li class=\"rtejustify\"><strong>/usr/local/etc/postfix/postgrey_whitelist_clients</strong> - вносим в этот список доверенные домены. Почта с этих доменов будет приниматься, минуя <strong>Greylist</strong>;</li>\n<li class=\"rtejustify\"><strong>/usr/local/etc/postfix/postgrey_whitelist_recipients</strong>&nbsp;- вносим в этот список адреса e-mail пользователей, для которых <strong>Greylist</strong> будет отключен.</li>\n</ul>\n<p class=\"rtejustify\">После внесения необходимых изменений перезапускаем Postfix:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td class=\"rtejustify\"><strong># sh /usr/local/etc/rc.d/postfix restart</strong><br />\n postfix/postfix-script: stopping the Postfix mail system<br />\n postfix/postfix-script: starting the Postfix mail system</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">&nbsp;Для проверки посмотрим логи почтового сервера:</p>\n<p><table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td class=\"rtejustify\"># <strong>tail -f /var/log/maillog</strong></td>\n</tr>\n</tbody>\n</table>\n</p>\n<p class=\"rtejustify\">В случае обнаружения примерно такой записи:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td class=\"rtejustify\">Jul 15 15:41:32 web0 postfix/smtpd[75888]: NOQUEUE: reject: RCPT from mail.example.com[xxx.xxx.xxx.xxx: 450 4.2.0 <span class=\"spamspan\"><span class=\"u\">office</span> [at] <span class=\"d\">example [dot] com</span></span>: Recipient address rejected: Greylisted, see <strong>http://postgrey.schweikert.ch/help/example.com.html</strong>; <span class=\"spamspan\"><span class=\"u\">from=admin</span> [at] <span class=\"d\">example [dot] org</span></span> <span class=\"spamspan\"><span class=\"u\">to=office</span> [at] <span class=\"d\">example [dot] org</span></span> proto=ESMTP helo=&lt;mail.example.com&gt;</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">можно считать,&nbsp;что настройка завершена успешно.</p>\n<p class=\"rtejustify\">Настройки по умолчанию я не изменял, время грейлистинга - 5 минут.</p>\n<p class=\"rtejustify\">Ознакомиться с доступными опциями можно на странице руководства:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td class=\"rtejustify\"># <strong>man postgrey</strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Необходимые ключи запуска необходимо&nbsp;добавить в <strong>/usr/local/etc/rc.d/postgrey</strong> и перезапустить <strong>potgrey</strong>.</p>\n<p class=\"rtejustify\">Сформировать отчет можно, используя утилиту&nbsp;<strong>postgreyreport</strong>,&nbsp;следующей командой :</p>\n<p class=\"rteleft\">&nbsp;<textarea rows=\"4\" cols=\"70\" name=\"\">cat /var/log/maillog | postgreyreport --dbdir=/var/db/postgrey --nosingle_line --check_sender=mx,a --separate_by_subnet=&quot;:-------------------------------------------------------------------------------------------:\\n&quot;</textarea></p>\n<p class=\"rtejustify\">&nbsp;</p>\n', created = 1767842980, expire = 1767929380, headers = '', serialized = 0 WHERE cid = '2:6f32bcabbed92e5aea4c6f5e93fee4e3' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:7e1ccb0ebc8ec1b1e08d9d5283d4f605' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>А нет желания написать по настройке Exima статью, где разжевано, будет все?&nbsp;:)&nbsp; Неделю мучаю, а нормально он так и не заработал. Вроде отправляет (с веб морды и консоли) и получает нормально, но в веб морде полученное не отображает и почтовым клиентом не получается принять/отправить почту )</p>\n<p>&nbsp;</p>\n<p>&nbsp;</p>\n', created = 1767842980, expire = 1767929380, headers = '', serialized = 0 WHERE cid = '2:7e1ccb0ebc8ec1b1e08d9d5283d4f605' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:061afbef166f5d40b33bb991eeea95d3' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtejustify\">Наверное напишу,&nbsp;когда буду сетапить очередной почтовик,&nbsp;при условии,&nbsp;что будет немного времени. А то, обычно,&nbsp;сервер нужен &quot;на вчера&quot;,&nbsp;и просто не остается времени, чтобы задокументировать настройку.</p>\n<p class=\"rtejustify\">Если нужна помощь - пиши на мыло. Возможно пересечемся,&nbsp;попьем пивасика и посмотрим что да как...</p>\n', created = 1767842980, expire = 1767929380, headers = '', serialized = 0 WHERE cid = '2:061afbef166f5d40b33bb991eeea95d3' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>&nbsp;</p>\n<p>&nbsp;</p>\n', created = 1767842980, expire = 1767929380, headers = '', serialized = 0 WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a class=\"thickbox\" href=\"/files/imagepicker/1/wake_up_ua.png\"><img alt=\"Вставай, Україно!\" class=\"imgp_img\" src=\"/files/imagepicker/1/thumbs/wake_up_ua.png\" style=\"height:200px; width:150px\" /></a></p>\n', created = 1767842980, expire = 1767929380, headers = '', serialized = 0 WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:cc913d232116f0426090404133377d88' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a href=\"http://muff.kiev.ua/rss.xml\"><img alt=\"RSS\" width=\"160\" height=\"60\" src=\"http://muff.kiev.ua/files/muf-rss.png\" /></a></p>\n', created = 1767842980, expire = 1767929380, headers = '', serialized = 0 WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:39649256b636e3d5ded656bc52bd8c01' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
Версия для печатиОтправить другуPDF version

Postgrey (Postfix Greylisting Policy Server) - решение на Perl реализации технологии Greylisting для MTA Postfix.

Собственно говоря, Greylisting уже давно использую на корпоративных почтовых серверах. Но там в качестве MTA используется Exim. Сегодня знакомый пожаловался, что увеличилось количество приходящего спама на почтовые ящики в некоторых  доменах. Эти домены я не так давно перенес на отдельный сервер, чтобы отделить грешное от праведного, тоесть клиентские данные от корпоративных.

На этом сервере в качестве MTA используется Postfix. Ряд дополнительных проверок уже установлен. Теперь дело за малым - включить поддержку Greylisting. Итак, по вышеуказанной ссылке можно узнать, как работает технология "серых списков". Поэтому не будем тратить время на описание технологии, а сразу приступим к настройке. Выполним установку Postgrey из системы портов:

# cd /usr/ports/mail/postgrey/ && make install clean && rehash

 Следующим шагом добавляем поддержку Postgrey при загрузке:

# echo '# Postfix Greylisting' >> //etc/rc.conf
echo 'postgrey_enable="YES"' >> /etc/rc.conf 

Запускаем службу:

# sh /usr/local/etc/rc.d/postgrey start
Starting postgrey.

Далее, следуя инструкциям, приступаем к редактированию конфигурационного файла Postfix - main.cf. Необходимо в параметр smtpd_recipient_restrictions сразу после reject_unauth_destination добавить опцию check_policy_service inet:127.0.0.1:10023. Навожу пример моего параметра smtpd_recipient_restrictions: 

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_unknown_client,
  reject_unknown_hostname,
  reject_unknown_sender_domain,
  reject_unverified_sender,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  check_policy_service inet:127.0.0.1:10023,
  reject_unauth_pipelining,
  reject_unlisted_recipient,
  reject_invalid_hostname

Также следует обратить внимание на следующие файлы:

  • /usr/local/etc/postfix/postgrey_whitelist_clients - вносим в этот список доверенные домены. Почта с этих доменов будет приниматься, минуя Greylist;
  • /usr/local/etc/postfix/postgrey_whitelist_recipients - вносим в этот список адреса e-mail пользователей, для которых Greylist будет отключен.

После внесения необходимых изменений перезапускаем Postfix:

# sh /usr/local/etc/rc.d/postfix restart
postfix/postfix-script: stopping the Postfix mail system
postfix/postfix-script: starting the Postfix mail system

 Для проверки посмотрим логи почтового сервера:

# tail -f /var/log/maillog

В случае обнаружения примерно такой записи:

Jul 15 15:41:32 web0 postfix/smtpd[75888]: NOQUEUE: reject: RCPT from mail.example.com[xxx.xxx.xxx.xxx: 450 4.2.0 office [at] example [dot] com: Recipient address rejected: Greylisted, see http://postgrey.schweikert.ch/help/example.com.html; from=admin [at] example [dot] org to=office [at] example [dot] org proto=ESMTP helo=<mail.example.com>

можно считать, что настройка завершена успешно.

Настройки по умолчанию я не изменял, время грейлистинга - 5 минут.

Ознакомиться с доступными опциями можно на странице руководства:

# man postgrey

Необходимые ключи запуска необходимо добавить в /usr/local/etc/rc.d/postgrey и перезапустить potgrey.

Сформировать отчет можно, используя утилиту postgreyreport, следующей командой :

 

 

Голосов пока нет

А нет желания написать по

А нет желания написать по настройке Exima статью, где разжевано, будет все? :)  Неделю мучаю, а нормально он так и не заработал. Вроде отправляет (с веб морды и консоли) и получает нормально, но в веб морде полученное не отображает и почтовым клиентом не получается принять/отправить почту )

 

 

Наверное напишу...

Наверное напишу, когда буду сетапить очередной почтовик, при условии, что будет немного времени. А то, обычно, сервер нужен "на вчера", и просто не остается времени, чтобы задокументировать настройку.

Если нужна помощь - пиши на мыло. Возможно пересечемся, попьем пивасика и посмотрим что да как...

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Вставай, Україно!

Литература

Не клади голову на трансформатор - мозги размагнитишь...