带有 Postfix 的 Ubuntu Server 18.04

带有 Postfix 的 Ubuntu Server 18.04

再会,

我在 UbuntuServer 18.04 上拥有 POSTFIX + Courier-IMAP + Courier-POP;服务器有两张网卡;一张卡通过动态 IP 连接到互联网,另一张卡连接到本地网络。

我在互联网上有一个提供商的公共域,但服务器实际上在公司内。

邮件服务器在私有网络上运行良好,我可以通过互联网发送和接收电子邮件。

问题是,从我家或私有网络之外的任何地方,使用我的邮件服务器,我无法向任何收件人发送邮件,出现“中继访问被拒绝”的错误。我的服务器配置出了什么问题?

**********************************
FILE >> **main.cf:**

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) 
biff = no 
append_dot_mydomain = no 
readme_directory = no 
compatibility_level = 2 
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem 
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes 
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache                      
smtpd_relay_restrictions = permit_auth_destination permit_mynetworks permit_sasl_authenticated permit_inet_interfaces defer_unauth_destination
myhostname = ubuntusrv  
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases  
myorigin = /etc/mailname
mydestination = $myorigin, ubuntusrv, localhost.localdomain, localhost
relayhost =
mynetworks = 192.10.0.0/24 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0   
recipient_delimiter = + 
inet_interfaces = 
all inet_protocols = ipv4
home_mailbox = Maildir/ 
mail_location = maildir:~/Maildir 
sender_bcc_maps = hash:/etc/postfix/enviados.list

******************
FILE >>  master.cf

答案1

这是因为默认情况下 postfix 不会为其他主机中继邮件。它接受配置为接收邮件的域的电子邮件(mydestination),并为 中继邮件mynetworks

这样垃圾邮件发送者就无法使用您的电子邮件服务器发送垃圾邮件。运行开放中继是一种非常这是一个坏主意,因为它可能会在几分钟内被滥用,并且可能违反您的 ISP 的服务条款,导致互联网服务终止。

此行为由以下部分控制(我将其拆分以提高可读性):

smtpd_relay_restrictions = permit_auth_destination, 
                           permit_mynetworks,
                           permit_sasl_authenticated,
                           permit_inet_interfaces,
                           defer_unauth_destination

我们可以看到,您允许授权目的地、您自己的网络、sasl 认证的客户端和 inet_interfaces(例如,客户端的 IP 地址与运行邮件服务器的机器的 IP 之一匹配,从而有效地允许本地访问)。当您在自己的网络之外并尝试向第三方发送邮件时,您实际上处于 unauth_destination-group 中 - 这是不允许的。

解决方案是向邮件服务器验证用户身份。使用 TLS 证书配置 postfix(即使是自签名证书也可以,或者使用 Let's Encrypt),并使用 StartTLS 加密通信,以便您可以安全地传输密码。

要配置 Postfix 使用加密,请在当前配置上方添加以下内容:

smtpd_tls_cert_file=/path/to/certificate.pem
smtpd_tls_key_file=/path/to/key.pem
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_security_level = may

然后配置您正在使用的邮件客户端以使用 StartTLS,并使用邮件服务器上的帐户进行身份验证。

请勿将您的邮件服务器配置为开放中继!运行开放中继将导致你被列入黑名单到处在很短的时间内。配置身份验证!

相关内容