У меня есть почтовый сервер с Postfix и Dovecot, и пользователи могут отправлять электронные письма, но (после входа в систему) они могут изменять адрес и отправлять с других username@example.com
.
Например, user1@example.com
войдите в электронную почту через IMAP / SMTP, а затем он изменит адрес на admin@example.com
и все еще может отправлять письма, выдавая себя за другого пользователя.
Как я могу это отключить? Я попытался
smtpd_sender_restrictions = reject_authenticated_sender_login_mismatch
но потом user1
не могу отправить почту даже с user1@example.com
.
Чтобы ограничить адрес, разрешенный в MAIL FROM
команда на основе пользователя, Postfix должен знать, какой адрес (а) каким пользователям принадлежит. Следовательно, вы должны использовать эти ограничения с smtpd_sender_login_maps
.
smtpd_sender_restrictions
reject_authenticated_sender_login_mismatch
Обеспечивает
reject_sender_login_mismatch
ограничение только для аутентифицированных клиентов. Эта функция доступна в Postfix версии 2.1 и новее.Отклонить запрос, когда
$smtpd_sender_login_maps
указывает владельца дляMAIL FROM
адрес, но клиент (SASL) не вошел в систему как этотMAIL FROM
владелец адреса; или когда клиент (SASL) вошел в систему, но имя входа клиента не владеет адресом MAIL FROM в соответствии с$smtpd_sender_login_maps
.
Если вы используете virtual_alias_maps
для сопоставления адресов локальным пользователям формат идентичен для smtpd_sender_login_maps
, и вы можете просто использовать тот же файл. В этом примере я предполагаю, что hash:
Berkeley DB в /etc/postfix/virtual
(требуется postmap /etc/postfix/virtual
после доработок):
user1@example.com user1
joe.bloggs@example.com user1
user2@example.com user2
jane.doe@example.com user2
admin@example.com root
Благодаря этому можно использовать один и тот же файл для обеих целей, и изменения входящих карт немедленно повлияют и на разрешенные исходящие адреса.
В main.cf
:
virtual_alias_domains = example.com
virtual_alias_maps = hash:/etc/postfix/virtual
Для аутентифицированных подчинение (в порту 587
) в master.cf
(при условии TLS и Dovecot SASL):
submission inet n - - - - smtpd
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
-o smtpd_sasl_security_options=noanonymous
-o smtpd_sasl_local_domain=$myhostname
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o smtpd_sender_login_maps=hash:/etc/postfix/virtual
-o smtpd_sender_restrictions=reject_sender_login_mismatch
Конечно, можно использовать
smtpd_sender_login_maps = hash:/etc/postfix/virtual
smtpd_sender_restrictions = reject_authenticated_sender_login_mismatch
прямо в main.cf
, но я рекомендую использовать отдельную конфигурацию для подчинение: Он позволяет вам использовать другой набор ограничений и других настроек для аутентифицированных пользователей, чем для входящей почты, а также работает лучше, например, с домашними подключениями к Интернету, что ограничивает использование порта SMTP 25
.