Postfix只允许通过身份validation的用户

我有后缀安装和configuration,以便只有经过身份validation的用户可以中继。 如果我用telnettesting它似乎工作

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而无需身份validation。 也用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 

这是我的configuration:

 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 

任何想法如何防止人们发送电子邮件没有身份validation?

当您使用SMTP发送邮件时,您已经将服务器设置为需要validation。 但是,当您使用mailx时,您正在绕过SMTP并直接注入邮件。 php脚本也是一样 – 它不使用SMTP,而是使用本地机器上的本地邮件代理。 通常情况下,您确实希望该代理能够发送邮件,因为它是例如cron用来发送有关服务器上发生的问题的信息的程序。

据我所知,你不能要求使用sendmail / postdrop / mailx发送的邮件进行authentication,但你可以使用authorized_submit_users 限制允许谁使用它。 默认是“任何人”,你可以用一个用户名或查找列表来replace它。 所以,如果你想让root能够发送邮件(这当然是推荐的!),但是没有其他人,线会

  authorized_submit_users = root 

有更多的信息在后缀文件