Postgrey-это сервер политики, реализующий серый список для фильтрации спама на почтовых серверах Postfix.
Статьи Время чтения: 3 минуты Просмотров: 553
Принцип серого списка работает на том основании, что большое количество спама рассылается спам-ботами и другими MTA, не совместимыми с RFC.
Postgrey-это сервер политики, реализующий серый список для фильтрации спама на почтовых серверах Postfix. Принцип серого списка работает на том основании, что большое количество спама рассылается спам-ботами и другими MTA, не совместимыми с RFC. Postgrey временно отклонит новую почту с ошибкой 450 "повторите попытку позже" в течение определенного периода времени и зарегистрирует триплет CLIENT_IP/ОТПРАВИТЕЛЬ/ПОЛУЧАТЕЛЬ в его базе данных. Если отправляющий сервер совместим с RFC, он должен повторно отправить сообщение, после чего Postgrey проверит его базу данных на соответствие и примет сообщение. Задержка настраивается, и Postgrey поддерживает базу данных известных тройок, поэтому почту от данного отправителя следует задерживать только в первый раз.
Однако типичный отправитель спам-ботов, скорее всего, получит огромное количество отклоненных или отклоненных писем, поэтому спамеры обычно не отправляют сообщения повторно, когда они временно отклонены. Таким образом, любая почта, полученная из таких источников, просто отбрасывается почтовым сервером. Это имеет дополнительное преимущество, заключающееся в уменьшении затрат на фильтрацию и обработку на почтовом сервере, так как большой процент сообщений будет просто удален перед входом в MTA и не будет нуждаться в какой-либо иной фильтрации или обработке.
Серый список может быть настроен для работы с несколькими различными МТС. Пожалуйста, обратитесь к соответствующему разделу ниже для описания используемого вами MTA.
Postgrey был установлен с RPMForge на CentOS 5.1 полностью обновленным, хотя он должен одинаково применяться и в других версиях. Чтобы включить репозиторий RPMForge, пожалуйста, ознакомьтесь с инструкциями по RPMForge. Во-первых, установите postgrey:
yum install postgrey
Postgrey написан на Perl, поэтому требуется Perl вместе с некоторыми дополнительными модулями Perl. Yum автоматически устранит для вас все отсутствующие зависимости, и вы можете проверить требования на веб-сайте Postgrey.
Сначала нам нужно настроить Postfix для использования Postgrey. Отредактируйте /etc/postfix/main.cf, чтобы включить следующую строку check_policy_service в раздел smtpd_recipient_restrictions, как показано ниже (если у вас нет раздела smtpd_recipient_restrictions, то следующий пример будет работать нормально):
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination,
check_policy_service unix:postgrey/socket, permit
По умолчанию время, в течение которого Postgrey будет отклонять новые сообщения, равно 5 минутам, но мы можем изменить это с помощью --delay переключатель. Существует компромисс в том, что чем дольше время, тем больше шансов отклонить спам, но также и дольше законная почта будет задерживаться в первый раз. Возможно, стоит сначала установить это значение в 0.5 минуты (30 секунд), а затем увеличить это значение, как только Postgrey создаст базу данных обычных почтовых контактов для вашего сервера. Устанавливать задержку на значения, превышающие 300 секунд ( 5 минут), действительно не рекомендуется. Чтобы вручную установить задержку (в секундах), нам нужно создать файл конфигурации Postgrey в /etc/sysconfig/postgrey и добавить --delay переключитесь, как показано ниже (полный список опций см. в официальной документации):
OPTIONS="--unix=/var/spool/postfix/postgrey/socket --delay=30"
Наконец, нам нужно запустить службу Postgrey и перезагрузить настройки Postfix:
/sbin/service postgrey start
/sbin/service postfix reload
Убедитесь, что postgrey автоматически запускается при загрузке машины:
/sbin/chkconfig --levels 345 postgrey on
Теперь мы можем проверить наши почтовые журналы и увидеть postgrey в действии. Вот (запутанный) отрывок из моего /var/журнала/maillog:
#
# postgrey loads:
#
Dec 17 21:44:58 jessie postgrey[6844]: Process Backgrounded
Dec 17 21:44:58 jessie postgrey[6844]: 2007/12/17-21:44:58 postgrey
(type Net::Server::Multiplex) starting! pid(6844)
Dec 17 21:44:58 jessie postgrey[6844]: Binding to UNIX socket file /var/
spool/postfix/postgrey/socket using SOCK_STREAM
Dec 17 21:44:58 jessie postgrey[6844]: Setting gid to "101 101"
Dec 17 21:44:58 jessie postgrey[6844]: Setting uid to "100"
#
# postgrey greylisting a message:
#
Dec 17 21:23:49 jessie postfix/smtpd[6714]: connect from
mk-outboundfilter-4-a-1.mail.uk.tiscali.com[212.74.114.8]
Dec 17 21:23:49 jessie postfix/smtpd[6714]: NOQUEUE: reject: RCPT
from mk-outboundfilter-4-a-1.mail.uk.tiscali.com[212.74.114.8]:
450 4.2.0 : Recipient address rejected:
Greylisted, see http://postgrey.schweikert.ch/help/example.com.html;
from= to=
proto=ESMTP helo=
Dec 17 21:23:54 jessie postfix/smtpd[6714]: disconnect from mk-outboundfilter
-4-a-1.mail.uk.tiscali.com[212.74.114.8]
#
# postgrey accepting a message:
#
Dec 17 22:23:45 jessie postgrey[2218]: action=pass, reason=triplet found,
client_name=mk-outboundfilter-3-a-1.mail.uk.tiscali.com,
client_address=212.74.114.7, sender=bob@example.com, recipient=
ned@example.com
Если вы видите сообщение, подобное следующему:
Nov 18 09:39:03 jessie postfix/smtpd[26006]: warning: connect
to postgrey/socket: Permission denied
не расстраивайтесь, это проблема SELinux, и ее решение я размещу в ближайшем будущем. А пока можно просто отключить SELinux открыв /etc/selinux/config и отредактировать строку в соответствии с нижеприведенной:
SELINUX=disabled