Postfix 仅允许经过身份验证的用户

Postfix 仅允许经过身份验证的用户

我已安装并配置了 postfix,以便只有经过身份验证的用户才能中继。如果我用 telnet 测试它,这似乎有效

 root@mx3:/var/log# telnet localhost smtp
 Trying 127.0.0.1...
 Connected to localhost.
 Escape character is '^]'.
 220 mx3.xxx.ch ESMTP Postfix (Debian/GNU)
 ehlo xxx.ch
 250-mx3.zoee.ch
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-STARTTLS
 250-AUTH DIGEST-MD5 NTLM CRAM-MD5 LOGIN PLAIN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN
 mail from:[email protected]
 250 2.1.0 Ok
 rcpt to:[email protected]
 554 5.7.1 <[email protected]>: Relay access denied

但是我仍然可以使用 mailx 而无需身份验证。php 的邮件也是如此

echo "test" | mailx -s test [email protected]

May 16 10:58:21 mx3 postfix/pickup[10232]: D9634C00B1: uid=0
from=<root> May 16 10:58:21 mx3 postfix/cleanup[10273]: D9634C00B1:
message-id=<[email protected]> May 16 10:58:21 mx3
postfix/qmgr[10233]: D9634C00B1: from=<[email protected]>, size=275, nrcpt=1
(queue active) May 16 10:58:22 mx3 postfix/smtp[10274]: D9634C00B1:
to=<[email protected]>, relay=mx.sanc.ch[80.219.217.116]:25, delay=0.68,
delays=0.11/0.01/0.48/0.08, dsn=2.0.0, status=sent (250 2.0.0 Ok:
queued as BCA917F9A7) May 16 10:58:22 mx3 postfix/qmgr[10233]:
D9634C00B1: removed

这是我的配置:

myhostname = mx3.xxx.ch 
mydomain = xxx.ch
myorigin = $mydomain
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = mx3.xxx.ch, localhost, localhost.localdomain 
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_sasl_authenticated,reject_unauth_destination,check_relay_domains

知道如何阻止人们在未经身份验证的情况下发送电子邮件吗?

答案1

您已将服务器设置为在使用 SMTP 发送邮件时需要身份验证。但是,当您使用 mailx 时,您将绕过 SMTP 并直接注入邮件。php 脚本也是如此 - 它不使用 SMTP,而是使用本地计算机上的本地邮件代理。通常您确实希望该代理能够发送邮件,因为它是 cron 等程序用来发送有关服务器上发生的问题的信息的程序。

据我所知,您不能要求使用 sendmail/postdrop/mailx 发送的邮件进行身份验证,但是你使用 来限制谁可以使用它authorized_submit_users。默认是“任何人”,你可以用用户名列表或查找来替换它。因此,如果你想让 root 能够发送邮件(当然建议这样做!),但其他人则不能,那么该行将是

 authorized_submit_users = root

更多信息请访问Postfix 文档

相关内容