LINUX.ORG.RU
ФорумAdmin

Postfix: внутренний список рассылки закрыть от сообщений извне

 ,


0

1

Ситуация такая: есть унаследованный почтовый сервер на основе Postfix. У него также есть фильтр spamassassin. На этом сервере есть рассылка вида list@example.com, отправлять на которую можно только от @example.com. До недавнего времени так и было. Но тут однажды кто-то умный из америки отправил якобы с этого адреса на несуществующий, и диагностическая мессага пришла всем подписчикам этого списка рассылки.

Нужно простое, но железное правило (или сочетание правил), которое для RCPT TO: list@example.com пропускает только с MAIL FROM: @example.com. Причём spamassassin лучше не использовать (ведь он не удаляет, а добавляет в сабж **** SPAM ****), т.к. это не только спам, а и нарушение маршрута, и надо сделать в рамках /etc/postfix/main.cf

★★★★★

http://www.postfix.org/RESTRICTION_CLASS_README.html

Как то так:

/etc/postfix/main.cf:
    smtpd_recipient_restrictions =
        ...
        check_recipient_access hash:/etc/postfix/protected_destinations
        ...
    smtpd_restriction_classes = insiders_only
    insiders_only = check_sender_access hash:/etc/postfix/insiders, reject

/etc/postfix/protected_destinations:
    list@example.com   insiders_only

/etc/postfix/insiders:
     example.com      OK  

Правда, спамеры и могут указать и MAIL FROM из @example.com, но это другая задача.

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

Правда, спамеры и могут указать и MAIL FROM из @example.com

Просто надо check_sender_access заменить на check_client_access с внутренней подсетью.

blind_oracle ★★★★★
()
Ответ на: комментарий от mky

Константин, приветствую!

Спасибо, выручили. Единственное, обо что споткнулся, это вместо

postmap hash:/etc/postfix/protected_destinations
postmap hash:/etc/postfix/insiders
делал
postalias hash:/etc/postfix/protected_destinations
postalias hash:/etc/postfix/insiders
естественно, вылетали ошибки и ничего не работало.

Спамеры могут, но на то и spamassassin и еще другие строчки в конфигурации postfix. Это конфигурация в моём случае более работоспособна, чем указывать диапазоны внутренних сетей.

Тогда еще вопрос: а как сделать, говоря языком iptables, deny вместо reject, т.е. чтобы не отправлялось диагностического сообщения, а просто улетало в треш?

Infra_HDC ★★★★★
() автор топика
Ответ на: комментарий от sin_a

Спасибо, посмотрю на досуге. В моём любимом дистрибутиве есть пакет с этим ПО. :-)

Infra_HDC ★★★★★
() автор топика
Ответ на: комментарий от blind_oracle

Спасибо за совет. Подумаю, как бы и это можно было применить.

Infra_HDC ★★★★★
() автор топика
Ответ на: комментарий от Infra_HDC

Deny это действие ″DISCARD″. Нужно, чтобы оно срабатывало для всех, не подходящих под ″insiders″. Можно попробовать дописать в конец файла /etc/postfix/insiders строку:

.  DISCARD

Если это не поможет, то тогда нужно в файле ″insiders″ заменить дописанную строчку на:

/.*/  DISCARD
а в описании класса заменить hash:/etc/postfix/insiders на regexp:/etc/postfix/insiders.

Только протестируйте, что это работает правильно и не удаляет «правильные» письма. Я такое на практике не делал, может где ошибся.

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

Константин, доброго времени суток! Спасибо, вроде работает!

# grep regexp: /etc/postfix/main.cf
insiders_only = check_sender_access regexp:/etc/postfix/insiders, reject
# cat /etc/postfix/insiders
/^example.com$/	OK
/.*/		DISCARD
# rm /etc/postfix/insiders.db
# /etc/init.d/postfix reload
Красота :-)

Infra_HDC ★★★★★
() автор топика
Ответ на: комментарий от mky

UP! Не всё проверил. Не удаляет входящие правильные, но исходящие блокирует все с ошибкой Relay Access Denied. Даже в локалхосте. Слава Богу, пока на продакшен не выставлял конфиг. А то бы было ору. Откатил. Работает отправляет снова ОК.

Вообще, ценный опыт ковыряния в конфиге, спасибо.

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