- 操作系统:Linux Ubuntu 16.04
- Postfix 版本 3.1.0
- Dovecot 版本 2.2.22
情况
我们在运行 Ubuntu 16.04 的服务器上拥有基于 Postfix + Dovecot 的邮件系统。该系统配置良好,并且毫无问题地提供了以下功能:
- 递送邮件(从任何位置)
- 发送邮件(到任意位置)
- 为邮件提供 TLS 加密
smtpd_sasl_type = dovecot
通过 SSL (postfix )为 465 端口上的 SASL 用户提供身份验证
“到/从任何位置”意味着我们可以向/从 gmail.com 等发件人发送/接收邮件。
也使用smtpd_sender_login_maps
with reject_sender_login_mismatch
for 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
答案1
解决方案
通过添加到 main.cf 解决了问题compatibility_level = 2
,因此,这个参数与另一个参数(参见postconf -n
我上面问题的输出)一起完成了这项任务。此外,我对 main.cf 做了一些小改动,例如smtpd_sender_restrictions
序列,但这只是reject_sender_login_mismatch
校准。