今天早上,为了解决安全证书中名称不匹配的问题,我遵循了如何解决邮件服务器SSL的build议步骤? ,但现在,当试图从客户端发送电子邮件(在这种情况下客户端是Windows Mail)时,我收到以下错误。
被拒绝的电子邮件地址是“[email protected]”。 主题“这是一个testing。 ',帐户:'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
作为一个便笺,我的雇主希望能够从本地networking内外发送来自客户端(Thunderbird和Outlook)的电子邮件。
TLS只是在smtp会话上启用encryption,并不直接影响是否允许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
允许通过SASLauthentication的发件人。 这对于validation通常被阻止的networking之外的用户是必要的。
check_recipient_access
这将导致postfix在/ etc / postfix / filtered_domains中查找基于收件人地址的规则。 (通过文件名上的文件名来判断,它可能只是阻止特定的域…检查gmail.com是否列在那里?)
permit_mynetworks
这将允许IP地址的主机与$ mynetworks中指定的IP范围匹配。 在你发布的main.cf中,$ mynetworks被设置为127.0.0.1,所以它只会中继服务器本身生成的邮件。
基于该configuration,您的邮件客户端在被允许中继邮件之前将需要使用SMTPvalidation。 我不确定SASL正在使用什么数据库。 这是在/usr/lib/sasl2/smtpd.conf中指定的。推测它也使用与您的虚拟邮箱相同的数据库,所以您应该能够在您的邮件客户端启用SMTP身份validation并进行全部设置。
smtpd_use_tls = no
您已禁用TLS,因此您现在需要通过将本地networking添加到mynetworks
networking来授权您的本地networking。 例如,
mynetworks = 192.168.1.0/24 127.0.0.0/8
这将只解决从本地networking发送的问题。 要从本地networking外部发送电子邮件,您需要获得TLS身份validation。
我想你是想念你在my.com的domain.com,因为默认的relay_domains=$mydestination
,所以你可以追加你configuration的行:
mydestinations = $mydomain, $myhostname, localhost, localhost.localdomain
要么:
relay_domains = $mydomain
不要忘记每次编辑postfix conf文件时重新启动postfix服务器( service postfix restart
)。
我在Outlook(与鸽舍和后缀后端)有同样的问题,我花了两天寻找解决scheme,并调整我的configuration文件。 我只需要在Outlook的邮件设置中的“传出”选项卡中选中“服务器需要身份validation”,然后我的邮件就会发送到Gmail。 请参阅如何在http://support.bluetie.com/node/440查找设置的详细说明。
这个问题困扰了我一段时间。 我试图从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,并确保在更改networking后运行以下命令 –
sudo service networking restart
以及postfixconfiguration更改后的以下内容
sudo service postfix reload
对我来说:我必须添加localhost
到我的mynetworks
不pipe事实127.0.0.0/8
已经在那里。 所以,现在看起来:
mynetworks = 1.1.1.1/32, 127.0.0.0/8, localhost