Как отключить локальную ретрансляцию в 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