AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 42519
In Process
Noah Goodrich
Noah Goodrich
Asked: 2009-07-19 06:59:12 +0800 CST2009-07-19 06:59:12 +0800 CST 2009-07-19 06:59:12 +0800 CST

如何更正 Postfix''中继访问被拒绝'?

  • 772

今天早上,为了更正安全证书中名称不匹配的问题,我按照如何修复邮件服务器 SSL?,但是现在,当尝试从客户端(在本例中客户端是 Windows Mail)发送电子邮件时,我收到以下错误。

被拒绝的电子邮件地址是“[email protected]”。主题'这是一个测试。',帐户:'mail.domain.com',服务器:'mail.domain.com',协议:SMTP,服务器响应:'554 5.7.1:中继访问被拒绝',端口:25,安全(SSL):否,服务器错误:554,错误号:0x800CCC79

编辑:我仍然可以从此帐户检索电子邮件,并将电子邮件发送到同一域中的其他帐户。我只是无法向我们域之外的收件人发送电子邮件。

我尝试完全禁用 TLS 但没有骰子,我仍然得到同样的错误。

当我检查文件mail.log时,我看到以下内容。

Jul 18 08:24:41 company imapd: LOGIN, [email protected], ip=[::ffff:111.111.11.11], protocol=IMAP
Jul 18 08:24:42 company imapd: DISCONNECTED, [email protected], ip=[::ffff:111.111.11.11], headers=0, body=0, rcvd=83, sent=409, time=1
Jul 18 08:25:19 company postfix/smtpd[29282]: connect from company.university.edu[111.111.11.11]
Jul 18 08:25:19 company postfix/smtpd[29282]: NOQUEUE: reject: RCPT from company.university.edu[111.111.11.11]: 554 5.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<UserPC>
Jul 18 08:25:19 company postfix/smtpd[29282]: disconnect from company.university.edu[111.111.11.11]
Jul 18 08:25:22 company imapd: DISCONNECTED, [email protected], ip=[::ffff:111.111.11.11], headers=13, body=142579, rcvd=3289, sent=215892, time=79

文件main.cf如下所示:

#
# Postfix MTA Manager Main Configuration File;
#
# Please do NOT edit this file manually;
#

#
# Postfix directory settings; These are critical for normal Postfix MTA functionallity;
#

command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
program_directory = /usr/lib/postfix

#
# Some common configuration parameters;
#

inet_interfaces = all
mynetworks = 127.0.0.0/8
mynetworks_style = host

myhostname = mail.domain.com
mydomain = domain.com
myorigin = $mydomain

smtpd_banner = $myhostname ESMTP 2.4.7.1 (Debian/GNU)
setgid_group = postdrop

#
# Receiving messages parameters;
#

mydestination = localhost, company 
append_dot_mydomain = no
append_at_myorigin = yes
transport_maps = mysql:/etc/postfix/transport.cf

#
# Delivering local messages parameters;
#

mail_spool_directory = /var/spool/mail
mailbox_size_limit = 0
mailbox_command = procmail -a "$EXTENSION"

biff = no

alias_database = hash:/etc/aliases

local_recipient_maps =

#
# Delivering virtual messages parameters;
#
virtual_mailbox_maps=mysql:/etc/postfix/mysql_virt.cf
virtual_uid_maps=mysql:/etc/postfix/uids.cf
virtual_gid_maps=mysql:/etc/postfix/gids.cf
virtual_mailbox_base=/usr/local/virtual
virtual_maps=mysql:/etc/postfix/virtual.cf
virtual_mailbox_domains=mysql:/etc/postfix/virtual_domains.cf


#
# SASL paramters;
#
smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s

smtp_tls_CAfile = /etc/postfix/ssl/smptd.pem
smtp_tls_cert_file = /etc/postfix/ssl/smptd.crt
smtp_tls_key_file = /etc/postfix/ssl/smptd.key

smtpd_tls_CAfile = /etc/postfix/ssl/smptd.pem
smtpd_tls_cert_file = /etc/postfix/ssl/smptd.crt
smtpd_tls_key_file = /etc/postfix/ssl/smptd.key

smtpd_sasl_auth_enable = yes

smtpd_sasl_security_options = noanonymous

smtpd_sasl_local_domain =

broken_sasl_auth_clients = yes

smtpd_sender_restrictions =
        permit_sasl_authenticated
        permit_mynetworks

smtpd_recipient_restrictions =
        permit_sasl_authenticated
        check_recipient_access hash:/etc/postfix/filtered_domains
        permit_mynetworks
        reject_unauth_destination

作为旁注,我的雇主希望能够从我们的本地网络内部和外部的客户(Thunderbird 和 Outlook)发送电子邮件。

linux smtp postfix
  • 7 7 个回答
  • 458340 Views

7 个回答

  • Voted
  1. Brandon
    2009-07-23T12:59:39+08:002009-07-23T12:59:39+08:00

    TLS 只是在 smtp 会话上启用加密,并不直接影响 Postfix 是否被允许中继消息。

    出现中继拒绝消息是因为 smtpd_recipient_restrictions 规则不匹配。必须满足其中一个条件才能允许消息通过:

    smtpd_recipient_restrictions =
        permit_sasl_authenticated
        check_recipient_access hash:/etc/postfix/filtered_domains
        permit_mynetworks
        reject_unauth_destination
    

    解释这些规则:

    permit_sasl_authenticated
    

    允许通过 SASL 进行身份验证的发件人。这对于对通常被阻止的网络之外的用户进行身份验证是必要的。

    check_recipient_access
    

    这将导致 postfix 根据收件人地址在 /etc/postfix/filtered_domains 中查找规则。(从文件名上的文件名来看,可能只是屏蔽了特定的域……查看gmail.com是否列在其中?)

    permit_mynetworks
    

    这将允许按 IP 地址匹配 $mynetworks 中指定的 IP 范围的主机。在您发布的 main.cf 中,$mynetworks 设置为 127.0.0.1,因此它只会中继服务器本身生成的电子邮件。

    根据该配置,您的邮件客户端将需要使用 SMTP 身份验证才能被允许中继消息。我不确定 SASL 使用的是什么数据库。这是在 /usr/lib/sasl2/smtpd.conf 中指定的,大概它也使用与您的虚拟邮箱相同的数据库,因此您应该能够在您的邮件客户端中启用 SMTP 身份验证并进行所有设置。

    • 74
  2. pgs
    2009-07-19T07:47:57+08:002009-07-19T07:47:57+08:00
    smtpd_use_tls = no
    

    您已禁用 TLS,因此您现在需要通过将本地网络添加到mynetworks. 例如,

    mynetworks = 192.168.1.0/24 127.0.0.0/8
    

    这将修复仅从您的本地网络发送的问题。要从本地网络外部发送电子邮件,您需要启用 TLS 身份验证。

    • 18
  3. Dzung Nguyen
    2009-11-21T08:54:33+08:002009-11-21T08:54:33+08:00

    我认为您想念 mydestination 中的 domain.com ,因为 default relay_domains=$mydestination,所以您可以附加配置行:

    mydestinations = $mydomain, $myhostname, localhost, localhost.localdomain
    

    或者:

    relay_domains = $mydomain
    

    service postfix restart每次编辑 postfix conf 文件时不要忘记重新启动 postfix 服务器 ( )。

    • 9
  4. Dee
    2013-05-11T14:29:30+08:002013-05-11T14:29:30+08:00

    我在 Outlook 中遇到了同样的问题(使用 dovecote 和 postfix 后端),我花了两天时间寻找解决方案并调整我的配置文件。我需要做的就是在 Outlook 的邮件设置中的“发送”选项卡中检查“服务器需要身份验证”,我的邮件现在已发送到 gmail。请参阅有关如何在此处找到设置的详细说明http://support.bluetie.com/node/440。

    • 2
  5. A23
    2014-04-16T17:40:06+08:002014-04-16T17:40:06+08:00

    这个问题困扰了我一段时间。我试图从 server1.domain.com 连接到 server2.domain.com。

    这是我解决这个问题的方法 -

    #/etc/postfix/main.cf
    mydomain = server1.domain.com
    myhostname = $mydomain
    virtual_alias_maps = hash:/etc/postfix/virtual
    alias_database = hash:/etc/postfix/virtual
    myorigin = /etc/mailname
    mydestination = localhost.localdomain localhost $mydomain
    relayhost =
    mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
    mailbox_size_limit = 0
    recipient_delimiter = +
    inet_interfaces = all
    

    您还需要确保已正确设置 /etc/hosts 和 /etc/hostname 并确保在网络更改后运行以下命令 -

    sudo service networking restart
    

    以及后缀配置更改后的以下内容

    sudo service postfix reload
    
    • 2
  6. Greendrake
    2022-06-17T06:13:48+08:002022-06-17T06:13:48+08:00

    网上很多关于这个问题的答案都提到了添加permit_mynetworks到smtpd_recipient_restrictions. 但这些天似乎还不够。

    permit_mynetworks为了让它工作,我也必须添加smtpd_relay_restrictions(Postfix 3.4.14)。

    • 1
  7. Putnik
    2017-04-19T07:51:52+08:002017-04-19T07:51:52+08:00

    对我来说:无论事实已经存在localhost,我都必须添加。所以,现在看起来:mynetworks127.0.0.0/8

    mynetworks = 1.1.1.1/32, 127.0.0.0/8, localhost

    • 0

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve