Ste*_*eve 8 domain-name-system smtp postfix
我构建了一个基于 Web 的应用程序,但是当它尝试发送电子邮件时失败了。Postfix 在它的 mail.log 中记录以下内容:
postfix/smtpd[22261]: warning: hostname srv.eastinc.nl does not resolve to address 192.168.3.101
postfix/smtpd[22261]: connect from unknown[192.168.3.101]
postfix/smtpd[22261]: NOQUEUE: reject: RCPT from unknown[192.168.3.101]: 554 5.7.1 <someaddress@gmail.com>: Relay access denied; from=<Domain@eastinc.nl> to=<someaddress@gmail.com> proto=ESMTP helo=<domain.eastinc.nl>
postfix/smtpd[22261]: disconnect from unknown[192.168.3.101]
Run Code Online (Sandbox Code Playgroud)
我很确定 srv.eastinc.nl 解析为 192.168.3.101,因为 nslookup 是这样说的。后缀配置:
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
delay_warning_time = 2h
home_mailbox = Maildir/
inet_interfaces = all
mailbox_size_limit = 0
mydestination = eastinc.nl, mail.eastinc.nl, srv.eastinc.nl, localhost.eastinc.nl, localhost
myhostname = mail.eastinc.nl
mynetworks = localhost 192.168.3.101 127.0.0.1 srv.eastinc.nl
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost = smtp.ziggo.nl:25
smtp_always_send_ehlo = yes
smtp_sasl_auth_enable = no
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination
smtpd_sender_restrictions = reject_unknown_sender_domain
smtpd_tls_cert_file = /etc/ssl/certs/mailcert.pem
smtpd_tls_key_file = /etc/ssl/private/mail.key
smtpd_tls_protocols = !SSLv2, !SSLv3
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,192.168.3.101 和 srv.eastinc.nl 都应该能够通过 Postfix 中继邮件。关于如何让它发挥作用的任何想法?
Dar*_*aaz 12
您的配置中有以下限制:
smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination
smtpd_sender_restrictions = reject_unknown_sender_domain
Run Code Online (Sandbox Code Playgroud)
当客户端通过 RFC 4954 (AUTH) 协议成功通过身份验证时,允许请求。
拒绝请求,除非以下情况之一为真:
Postfix 是邮件转发器:解析的 RCPT TO 域匹配 $relay_domains 或其子域,并且不包含发件人指定的路由(user@elsewhere@domain),
Postfix 是最终目的地:解析的 RCPT TO 域匹配 $mydestination、$inet_interfaces、$proxy_interfaces、$virtual_alias_domains 或 $virtual_mailbox_domains,并且不包含发件人指定的路由(user@elsewhere@domain)。
当 Postfix 不是发件人地址的最终目的地时拒绝请求,并且 MAIL FROM 域具有 1) 没有 DNS MX 和没有 DNS A 记录,或 2) 格式错误的 MX 记录,例如具有零长度 MX 主机名的记录( Postfix 2.3 及更高版本)。
使用 unknown_address_reject_code 参数(默认值:450)、unknown_address_tempfail_action(默认值:defer_if_permit)或 550(nullmx,Postfix 3.0 及更高版本)指定回复。有关详细信息,请参阅相应的参数说明。
所以,我的猜测是:从 192.168.3.101 主机连接的人(它是服务器本身吗?)在没有身份验证的情况下发送邮件(日志中没有关于身份验证的内容)。因此,您需要以下限制才能这样做:
当客户端 IP 地址与 $mynetworks 中列出的任何网络或网络地址匹配时,允许请求。
smtpd_recipient_restrictions以permit_mynetworks.开头。
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
Run Code Online (Sandbox Code Playgroud)
UDP
有时真的很糟糕,permit_mynetworks因为任何主机$mynetworks都可以在没有身份验证的情况下提交邮件。
因此,最好通过 smtp 使用您的应用程序中的身份验证提交邮件,并且不要使用sendmail()/mail()功能
| 归档时间: |
|
| 查看次数: |
47167 次 |
| 最近记录: |