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 / 问题 / 416270
Accepted
chmike
chmike
Asked: 2012-08-11 04:14:24 +0800 CST2012-08-11 04:14:24 +0800 CST 2012-08-11 04:14:24 +0800 CST

我的 Postfix Dovecot sasl 配置有什么问题?

  • 772

我按照http://www.postfix.org/SASL_README.html#server_dovecot_comm说明中的说明配置了 postfix 和 dovecot以激活 sasl 身份验证。

不幸的是,postfix 拒绝所有连接,并在日志中显示以下错误

postfix/smtpd[5238]: fatal: no SASL authentication mechanisms

我正在使用 Ubuntu LTS 10.04。

谷歌搜索我看到很多人报告这个模糊的错误而没有描述一个明确的诊断。目前尚不清楚问题是出在 dovecot 端还是 postfix 端。

更新:使用postconf获得的 postfix sasl 配置| grep -e "^smtpd.*sasl"

smtpd_recipient_restrictions = 
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination,
    check_client_access hash:/etc/postfix/access,
    reject_rbl_client bl.spamcop.net,
    reject_rbl_client sbl-xbl.spamhaus.org,
    reject_rbl_client korea.services.net
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = no
smtpd_sasl_exceptions_networks = 
smtpd_sasl_local_domain = 
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_tls_security_options = noanonymous
smtpd_sasl_type = dovecot

当尝试连接telnet localhost 25时,连接会立即关闭并显示上述消息。注释掉smtpd_sasl_auth_enable = yes禁用 sasl 并且连接正常完成。

使用dovecot -n获得的 Dovecot 配置

# 1.2.9: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-41-generic i686 Ubuntu 10.04.4 LTS 
log_timestamp: %Y-%m-%d %H:%M:%S 
protocols: imaps
ssl_cert_file: /home/xxxx/cacert/xxxx.net/server.crt
ssl_key_file: /home/xxxx/cacert/xxxx.net/server.key
verbose_ssl: yes
login_dir: /var/run/dovecot/login
login_executable: /usr/lib/dovecot/imap-login
mail_privileged_group: mail
mail_location: maildir:~/Maildir
mbox_write_locks: fcntl dotlock
auth default:
  mechanisms: plain login
  passdb:
    driver: pam
  userdb:
    driver: passwd
  socket:
    type: listen
    client:
      path: /var/spool/postfix/private/auth
      mode: 432
      user: postfix
      group: postfix

用 xxxx 隐藏的真实值

root@xxxx:/etc/postfix# stat /var/spool/postfix/private/auth 
  File: «/var/spool/postfix/private/auth»
  Size: 0           Blocks: 0          IO Block: 4096   socket
Device: 801h/2049d  Inode: 6817165     Links: 1
Access: (0660/srw-rw----)  Uid: (  111/ postfix)   Gid: (  120/ postfix)
Access: 2012-08-10 16:47:06.000000000 +0200
Modify: 2012-08-10 16:46:09.000000000 +0200
Change: 2012-08-10 16:46:09.000000000 +0200

更新:如果我将smtpd_tls_auth_only = no更改为smtpd_tls_auth_only = yes ,错误将被删除。现在我可以从远程主机接收邮件到本地邮箱了。

我必须配置我的 MUA 以连接 STARTTLS 才能连接。如果我尝试使用 SSL/TLS 连接,连接将挂起。使用 STARTTLS,连接已建立,但由于是匿名的,因此邮件中继被拒绝,这正是我想要启用的。这是我在系统日志中看到的。

postfix/smtpd[7715]: connect from unknown[192.168.2.17]
postfix/smtpd[7715]: setting up TLS connection from unknown[192.168.2.17]
postfix/smtpd[7715]: Anonymous TLS connection established from unknown[192.168.2.17]: TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)

尝试通过 postfix 服务器中继邮件时更新dovecot auth_debug 输出。这可能是后缀配置问题。

postfix/smtpd[8186]: connect from unknown[192.168.2.17]
postfix/smtpd[8186]: setting up TLS connection from unknown[192.168.2.17]
postfix/smtpd[8186]: Anonymous TLS connection established from unknown[192.168.2.17]: TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)
dovecot: auth(default): new auth connection: pid=8186
dovecot: auth(default): client in: AUTH#0111#011PLAIN#011service=smtp#011nologin#011lip=192.168.2.3#011rip=192.168.2.17#011secured#011resp=<hidden>
home dovecot: auth-worker(default): pam(yyyy,192.168.2.17): lookup service=dovecot
home dovecot: auth-worker(default): pam(yyyy,192.168.2.17): #1/1 style=1 msg=Password: 
home dovecot: auth(default): client out: OK#0111#011user=yyyy
postfix/smtpd[8186]: NOQUEUE: reject: RCPT from unknown[192.168.2.17]: 554 5.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[192.168.2.17]>
postfix/smtpd[8186]: disconnect from unknown[192.168.2.17]

这意味着 postfix 与 dovecot 正确通信,我假设身份验证有效,因为 dovecot 在其事务结束时返回 Ok。

发送到本地帐户有效,我的 MUA 按预期使用 TLS。因此,剩下的唯一问题是允许经过身份验证的用户进行中继。我以为

smtpd_recipient_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination

阅读后缀文档后就足够了。

解决方案:注释掉 smtpd_sender_restriction 参数中继是可能的。我是通过一个一个地注释掉可疑的论点找到的。我不知道是什么阻止了其中的邮件中继。

smtpd_sender_restrictions =
    permit_mynetworks,
    reject_sender_login_mismatch,
    reject_unauth_destination,
    reject_unauth_pipelining,
    reject_unknown_sender_domain
   regexp:/etc/postfix/forbid_from
postfix
  • 2 2 个回答
  • 10225 Views

2 个回答

  • Voted
  1. dotplus
    2012-08-11T05:46:50+08:002012-08-11T05:46:50+08:00

    我们可能可以通过几个问题来解决这个问题:

    • 鸽舍在运行吗?
    • 您可以使用 IMAP/POP 客户端对其进行身份验证吗?
    • 有可用的插座/var/spool/postfix/private/auth吗?
    • 后缀用户是否可读/可写套接字?

    如果对这些问题中的任何一个的回答是“否”,我们就发现了您的问题。如果答案都是“是”,请发布doveconf -n

    • 2
  2. Best Answer
    chmike
    2012-08-16T01:32:25+08:002012-08-16T01:32:25+08:00

    我自己解决了这个问题。

    导致继电器失效的参数是

    smtpd_sender_restrictions = ..., reject_unauth_destination, ...
    

    删除后,经过 sasl 身份验证的用户可以进行中继。

    • 1

相关问题

  • Postfix 在特定端口上接受邮件

  • 让 Postfix 以两种方式处理垃圾邮件

  • Postfix 或 exim:自动/程序化和转发电子邮件设置

  • 后缀电子邮件地址

  • 什么是最好的开源电子邮件解决方案包

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

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

    • 9 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +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