Ситуация
У нас почтовая система на базе Postfix + Dovecot на сервере под управлением Ubuntu 16.04. Система практически хорошо настроена и без проблем предоставляет следующие возможности:
smtpd_sasl_type = dovecot
)"в/из любого места" означает, что мы можем отправлять/получать почту на/от таких отправителей как gmail.com и т.д.
Также используем smtpd_sender_login_maps
с reject_sender_login_mismatch
для smtpd_sender_restrictions
.
Но есть "маленькая" проблема: пользователи могут подключаться с помощью любого современного почтового приложения к нашему серверу через 25 порт без авторизации и отправлять письма кому угодно, используя в качестве "адреса отправителя" не существующий адрес.
Мы хотим разрешить отправку почты через наш сервер только для аутентифицированных пользователей и отклонять исходящую почту от анонимных пользователей. Возможно ли это?
postconf -n:
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
default_process_limit = 100
disable_vrfy_command = yes
header_size_limit = 51200
inet_interfaces = all
inet_protocols = all
mailbox_size_limit = 0
message_size_limit = 10485760
mydestination = $myhostname, localhost.$mydomain $mydomain
myhostname = ourdomain.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = ourdomain.com
queue_minfree = 20971520
readme_directory = no
recipient_delimiter = +
relayhost =
smtp_tls_policy_maps = hash:/etc/postfix/tls_policy
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = AL Mail Service
smtpd_client_connection_count_limit = 10
smtpd_client_connection_rate_limit = 30
smtpd_command_filter = pcre:/usr/local/etc/postfix/command_filter
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_recipient_limit = 100
smtpd_recipient_restrictions = permit_sasl_authenticated permit_mynetworks reject_unauth_destination
smtpd_relay_restrictions = permit_sasl_authenticated permit_mynetworks defer_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sender_login_maps = hash:/etc/postfix/mailsbase
smtpd_sender_restrictions = reject_unauth_destination reject_unknown_sender_domain reject_sender_login_mismatch
smtpd_tls_cert_file = /etc/postfix/certs/cert.pem
smtpd_tls_key_file = $smtpd_tls_cert_file
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
Решение
Проблема решена путем добавления в main.cf compatibility_level = 2
Итак, этот параметр вместе с парой других (см. Вывод postconf -n
из моего вопроса выше) полностью выполнили эту задачу. Кроме того, я внес небольшие изменения в main.cf, например smtpd_sender_restrictions
последовательность, но это просто калибровка reject_sender_login_mismatch
.