【问题标题】:Postfix SMTP on Remote Server Responds 554 Relay Access Denied for rcpt (recipient). Works okay on 'localhost' smtp server远程服务器上的 Postfix SMTP 响应 554 Relay Access Denied for rcpt(recipient)。在 'localhost' smtp 服务器上工作正常
【发布时间】:2015-05-28 10:49:04
【问题描述】:

我正在尝试通过运行postfix 作为 smtp 服务器的远程虚拟机发送电子邮件。

但是,我在发送 rcpt cmd 时收到 554 - Relay access denied 错误。

(554, b'5.7.1 <xxxxx@xyz.org>: Relay access denied')

我知道它拒绝了我尝试设置为收件人的电子邮件地址,但我不明白为什么。


套接字连接本身建立良好,我可以在尝试 rcpt 之前发送 mail cmd。


环境详情:

主机:

Windows 7 机器/语言:Python 3。

来宾虚拟机:

Docker 容器 (Ubuntu) VM 运行 postfixssh -- 使用 dhcp 分配的 IP 地址 10.35.50.166


这是正在运行的python 代码:

(在主机上):

import smtplib
server = smtplib.SMTP(host='10.35.50.166', port=8025)

server.mail('xxxxx@xyz.org')
(250, b'2.1.0 Ok')

server.rcpt('xxxxx@xyz.org')
(554, b'5.7.1 <xxxxx@xyz.org>: Relay access denied')

从guest机器运行,没有发生错误

import smtplib
server = smtplib.SMTP(host='localhost', port=8025)

server.mail('xxxxx@xyz.org')
(250, b'2.1.0 Ok')

server.rcpt('xxxxx@xyz.org')
(250, b'2.1.5 Ok')

【问题讨论】:

  • 3 月 24 日 22:57:38 04305ce1d661 后缀/smtpd[25121]:NOQUEUE:拒绝:来自未知 [172.17.42.1] 的 RCPT:554 5.7.1 :中继访问否认;从= 到= proto=SMTP

标签: smtp postfix-mta


【解决方案1】:

Postfix 在 Ubuntu 上的默认配置只允许在本地接口(即 localhost)上进行中继访问。在其他接口(VM网络)上连接时,需要SMTP认证。

因此,您可以将身份验证添加到您的 SMTP 调用,或者将您的主机 IP 添加到允许的中继网络。

要实现后者,请在 /etc/postfix/main.cf 文件中找到读取的行

mynetworks = 127.0.0.0/8

并将其更改为

127.0.0.0/8,10.0.0.0/8

然后用

重新加载后缀
sudo postfix reload

编辑: 或者,您可以将mynetworks_style 设置为

mynetworks_style = subnet

BASIC CONFIGURATION README

【讨论】:

  • 花了 3 小时研究与那个问题完全相同的问题。感谢您的帮助!
  • 你是我的英雄
【解决方案2】:

在未设置本地网络允许中继的 postfix 服务器上的 main.cf 中将出现配置错误。

你需要类似的东西

Localnetworks=0.0.0.0/24(您的网络或 ip 是访客机器)

【讨论】:

    【解决方案3】:

    问题已解决。这是我现在使用的配置。由于itchee,问题在于mynetworks 指令。

    # See /usr/share/postfix/main.cf.dist for a commented, more complete version
    
    
    # Debian specific:  Specifying a file name will cause the first
    # line of that file to be used as the name.  The Debian default
    # is /etc/mailname.
    #myorigin = /etc/mailname
    
    smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
    biff = no
    
    # appending .domain is the MUA's job.
    append_dot_mydomain = no
    
    # Uncomment the next line to generate "delayed mail" warnings
    #delay_warning_time = 4h
    
    readme_directory = no
    
    # TLS parameters
    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
    
    # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
    # information on enabling SSL in the smtp client.
    
    myhostname = localhost
    #myorigin = $mydomain
    #relayhost = $mydomain
    
    
    alias_maps = hash:/etc/aliases
    alias_database = hash:/etc/aliases
    mydestination = localdomain, localhost, localhost.localdomain, localhost
    
    relayhost =
    
    #mynetworks = 127.0.0.0/8 [::]/128 [::ffff:127.0.0.0]/104 [::1]/128
    
    mynetworks = 127.0.0.0/8 10.0.0.0/8 172.0.0.0/8 [::]/128 [::ffff:127.0.0.0]/104 [::1]/128
    
    
    mailbox_size_limit = 0
    recipient_delimiter = +
    
    
    #inet_interfaces = localhost
    

    【讨论】:

    • 您好,eclewlow,欢迎来到 Stack Exchange 网络!由于 itchee 的回答帮助您解决了问题,因此您应该接受他们的回答以给予他们信任并通知其他人您的问题已解决。有关详细信息,请参阅How does accepting an answer work?。另外:这更像是一个系统管理问题,而不是一个与编程相关的问题,所以它对 StackOverflow 来说是题外话。服务器故障已超过3,000 Postfix questions tag
    猜你喜欢
    • 2014-03-30
    • 2013-02-15
    • 2013-03-05
    • 2011-09-16
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    相关资源
    最近更新 更多