Postfix 5.7.1 中继访问被拒绝

Postfix 5.7.1 中继访问被拒绝

我知道这里有很多类似的问题,但没有一个对我有帮助。
所以我有一台 Debian 7.0 服务器,上面有 postfix 和 dovecot,使用自签名证书。当我通过 SSH 连接到服务器时,我可以使用 telnet 向其他服务器发送电子邮件,但我无法通过 Thunderbird 客户端发送电子邮件,并显示以下错误消息:

发送邮件时出错。邮件服务器响应:
5.7.1:拒绝中继访问。请检查邮件收件人 [电子邮件保护]然后再试一次。

首先,我的 ISP 阻止了端口 25,因此我使用端口 465,如下所示:
在此处输入图片描述

这是我在设置时编辑的 master.cf 的一部分:

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       -       -       -       smtpd
#smtp      inet  n       -       -       -       1       postscreen
#smtpd     pass  -       -       -       -       -       smtpd
#dnsblog   unix  -       -       -       -       0       dnsblog
#tlsproxy  unix  -       -       -       -       0       tlsproxy

submission inet n       -       -       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth

smtps     inet  n       -       -       -       -       smtpd

这是我的 main.cf:

myhostname = mail.server.com
myorigin = /etc/mailname
mydestination = mail.server.com, server.com, 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

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

smtpd_tls_cert_file=/etc/ssl/certs/mailcert.pem
smtpd_tls_key_file=/etc/ssl/private/mail.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
smtpd_tls_protocols = !SSLv2, !SSLv3

smtpd_tls_security_level = may
smtp_tls_security_level = may
smtp_tls_loglevel = 1
smtpd_tls_loglevel = 1

local_recipient_maps = proxy:unix:passwd.byname $alias_maps

inet_protocols = all

这是我的 dovecot.conf:

disable_plaintext_auth = no
mail_privileged_group = mail
mail_location = mbox:~/mail:INBOX=/var/mail/%u
userdb {
  driver = passwd
}
passdb {
  args = %s
  driver = pam
}
protocols = " imap"

service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
}

ssl=required
ssl_cert =< /etc/ssl/certs/mailcert.pem
ssl_key =< /etc/ssl/private/mail.key

最后,当错误发生时,我的 mail.log 的内容如下:

Nov 14 13:17:24 Test postfix/smtpd[10720]: connect from 49-3-134-95.pool.ukrtel.net[95.134.3.49]
Nov 14 13:17:25 Test postfix/smtpd[10720]: Anonymous TLS connection established from 49-3-134-95.pool.ukrtel.net[95.134.3.49]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
Nov 14 13:17:25 Test postfix/smtpd[10720]: NOQUEUE: reject: RCPT from 49-3-134-95.pool.ukrtel.net[95.134.3.49]: 554 5.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[192.168.0.101]>
Nov 14 13:17:30 Test postfix/smtpd[10720]: disconnect from 49-3-134-95.pool.ukrtel.net[95.134.3.49]

我应该怎样修复此问题?

================= 更新 ======================

看完之后http://www.postfix.org/SASL_README.htmlhttp://wiki2.dovecot.org/HowTo/PostfixAndDovecotSASL以下是我所做的更改:

新的master.cf:

submission inet n       -       -       -       -       smtpd
      -o syslog_name=postfix/submission
      -o smtpd_tls_security_level=encrypt
      -o smtpd_sasl_auth_enable=yes
      -o smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
      -o milter_macro_daemon_name=ORIGINATING
      -o smtpd_sasl_type=dovecot
      -o smtpd_sasl_path=private/auth
      -o smtpd_sasl_local_domain=$myhostname

    smtps     inet  n       -       -       -       -       smtpd

添加到main.cf:

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

添加到dovecot.conf:

auth_mechanisms = plain login

仍然没有运气,当我尝试发送信件时,我遇到了完全相同的错误。

答案1

问题是您没有通过 SASL 进行身份验证。

您在提交时已设置此项:

-o smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,reject

第一个允许 mynetworks(似乎只有 localhost),第二个仅允许经过身份验证的用户。您的日志显示您建立了匿名 TLS 连接,但没有 SASL 身份验证。

我在你的 main.cf 中没有看到任何 SASL 配置,你可能需要看看

答案2

正如 NickW 所说,您的配置只允许您从主机匿名发送邮件我的网络并从其他位置进行验证。

因此你有两个解决方案:

  • 启用 SASL 身份验证
  • 将您的公共 IP 添加到 Postfix我的网络参数允许您在未经身份验证的情况下发送邮件(如果您从多个位置发送邮件,我不建议使用此解决方案)

相关内容