Как отключить локальную ретрансляцию в postfix для неаутентифицированных пользователей?

Я хочу запретить моим php-скриптам отправлять почту через MTA в localhost 25 без аутентификации.

Мне сказали, что сервер по умолчанию доверяет сам себе, и поэтому в этом случае мне не нужна авторизация. Поэтому я должен отключить "неаутентифицированное локальное реле". Как я могу добиться этого в postfix?

3 ответа

В вашей конфигурации Postfix вы можете использовать настройку smtpd_recipient_restrictions чтобы решить, кто должен быть в состоянии использовать ваш сервер в качестве реле.

Например, в моем конфиге это выглядит так:

smtpd_recipient_restrictions = 
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_unauth_destination

Это означает, что каждый из моей сети (см. Также mynetworks настройки), и каждый, кто прошел проверку подлинности, может отправить электронное письмо. Просто удалить permit_mynetworksи никто больше не сможет отправлять электронную почту без аутентификации. Просто имейте в виду, что это может сломать другие программы, которые в настоящее время полагаются на возможность отправлять вам электронную почту без аутентификации, а не только ваше PHP-приложение.

Вы уверены, что ваши сценарии отправляют электронную почту по TCP-соединению на localhost? Это довольно редко, локальные электронные письма обычно вводятся непосредственно в очередь постфиксов maildrop.

Как упомянул Алекс, электронные письма от локальных программ часто попадают прямо в очередь, минуя все сетевые конфигурации, которые вы развернули, чтобы заблокировать это.

Настройка для управления этим локальным поведением: author_submit_users

В вашей конфигурации postfix main.cf у вас может быть эта строка:

authorized_submit_users = static:anyone

Это может быть не задано явно, но вышеприведенное является значением по умолчанию, поэтому ЛЮБОЙ именованный пользователь на localhost может отправлять данные непосредственно в очередь. Чтобы полностью заблокировать очередь отправки, просто определите пустой список в main.cf:

authorized_submit_users =

или я хотел бы сделать следующее, чтобы разрешить отправку root только на localhost:

authorized_submit_users = root

Ссылка: http://www.postfix.org/postconf.5.html

Другие вопросы по тегам