четверг, 22 октября 2009 г.

Фильтр получателей писем в Postfix

Возникла задача ограничить только несколькими получателями электронных почтовых сообщений . В качестве почтового агента у нас используется postfix. Итак, вношу строчки такого вида в main.cf:

smtpd_recipient_restrictions =
check_recipient_access = hash:/etc/postfix/access
reject,

в файл access пишем адреса или шаблоны доменов, на которые возможна отсылка почты.

microsoft.com OK
apr@dk.com OK

После этого выполняем команды:
#postmap hash:/etc/postfix/access
#service postfix restart

Так вот, существует несколько маленьких нюансов, на которые я натолкнулся. Во первых, оказалось, что в файле (в моем случае "access") адреса должны начинаться без пробелов с первой колонки. Узнать об этом было очень важно и было не просто , потому что в самом разгаре работа, а у меня не отсылаются письма. Здесь и Инет не поможет, просто перебираешь все варианты. Во вторых, интересный момент всплыл, оказывается, как выглядит шаблон домена зависит от версии Postfix. У меня два почтовых сервера на LINUX. На одном версия Postfix 1.1.11 на другом 2.2.10. Кстати для информации, версии postfix можно узнать, заглянув в файл main.cf и найдя ключик "mail_version", или выполнив команду:

#postconf -d grep mail_version

Так вот, чтобы, допустим, указать домен и все поддомены в 1.1.11, надо указать строчку вида:

com OK

а в версии 2.2.10:

.com OK

Может быть это пригодиться кому нибудь и не придеться тестировать как мне.
Если вам захочется поставить фильтр еще и на отправителей писем, добавте такие строчки в main.cf:

smtpd_sender_restrictions =
check_sender_access hash:/etc/postfix/sender

в файл sender впишите от кого нужно принимать сообщения и от кого запрещено:

gmail.com OK
.com REJECT

Учтите, что эта строчка должна быть выше smtpd_recipient_restrictions.