此配置曾经有效,但更新至 Dovecot 2(Ubuntu 12.04)后,发送给 mailman 的邮件就无法再投递了:
邮件没有投递给邮递员,而是被退回,原因是不存在的用户[email protected]
postconf -n
:
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
dovecot_destination_recipient_limit = 1
inet_interfaces = all
inet_protocols = ipv4
mailbox_command = /usr/lib/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT"
mailbox_size_limit = 0
mydestination = $myhostname
myhostname = host.domain.tld
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 141.x.x.x
myorigin = /etc/mailname
owner_request_special = no
readme_directory = /usr/share/doc/postfix
recipient_delimiter = +
relayhost = smarthost.domain.tld
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP
smtpd_recipient_restrictions = reject_unknown_recipient_domain, reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_tls_CAfile = /etc/postfix/cacert.pem
smtpd_tls_cert_file = /etc/ssl/certs/ssl-mail.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-mail.key
smtpd_tls_loglevel = 3
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s
smtpd_use_tls = yes
tls_random_source = dev:/dev/urandom
unknown_local_recipient_reject_code = 550
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf, hash:/var/lib/mailman/data/virtual-mailman, hash:/etc/postfix/virtual
virtual_gid_maps = static:1002
virtual_mailbox_base = /home/vmail
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 51200000
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_transport = dovecot
virtual_uid_maps = static:1002
master.cf
:
# Postfix 主进程配置文件。有关格式的详细信息 # 有关该文件的信息,请参阅 master(5) 手册页(命令:“man 5 master”)。 # # 编辑此文件后,请不要忘记执行“postfix reload”。 # # ========================================================================== # 服务类型 private unpriv chroot wakeup maxproc 命令 + 参数 # (是) (是) (是) (从不) (100) # ========================================================================== smtp inet n - - - - smtpd 提交 inet n - - - - smtpd -o smtpd_tls_security_level =加密 -o smtpd_sasl_auth_enable=是 -o smtpd_client_restrictions=permit_sasl_authenticated,拒绝 -o milter_macro_daemon_name=起始 smtps inet n - - - - smtpd -o smtpd_tls_wrappermode=是 -o smtpd_sasl_auth_enable=是 -o smtpd_client_restrictions=permit_sasl_authenticated,拒绝 -o milter_macro_daemon_name=起始 #628 inet n - - - - qmqpd 拾取先进先出 - - 60 1 拾取 清理 unix n - - - 0 清理 qmgr fifo n - n 300 1 qmgr #qmgr fifo n - - 300 1 oqmgr tlsmgr unix - - - 1000?1 tlsmgr 重写 unix - - - - - 简单重写 弹回 unix - - - - 0 弹回 推迟 unix - - - - 0 反弹 跟踪 unix - - - - 0 反弹 验证 unix - - - - 1 验证 刷新 unix n - - 1000? 0 刷新 代理映射 unix - - n - - 代理映射 proxywrite unix - - n - 1 proxymap smtp unix - - - - - smtp # 当将邮件作为备份 MX 中继时,禁用 fallback_relay 以避免 MX 循环 中继 unix - - - - - smtp -o smtp_fallback_relay= # -o smtp_helo_timeout=5 -o smtp_connect_timeout=5 显示q unix n - - - - 显示q 错误 unix - - - - - 错误 重试 unix - - - - - 错误 丢弃 unix - - - - - 丢弃 本地 unix-nn--本地 虚拟 unix - nn - - 虚拟 lmtp unix - - - - - lmtp 铁砧 unix - - - - 1 个铁砧 scache unix - - - - 1 scache # # ==================================================================== # 与非 Postfix 软件的接口。请务必检查手册 # 非 Postfix 软件的页面来找出它需要什么选项。 # # 以下许多服务都使用 Postfix pipe(8) 传递 # 代理。有关 ${recipient} 的信息,请参阅 pipe(8) 手册页 # 和其他消息信封选项。 # ==================================================================== # # maildrop。有关详细信息,请参阅 Postfix MAILDROP_README 文件。 # 还在 main.cf 中指定:maildrop_destination_recipient_limit=1 # maildrop unix-nn--管道 标志=DRhu 用户=vmail argv=/usr/bin/maildrop -d ${recipient} # # 查看 Postfix UUCP_README 文件了解配置详细信息。 # uucp unix-nn--管道 标志=Fqhu 用户=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient) # # 其他外部交付方法。 # ifmail unix-nn--管道 标志 = F 用户 = ftn argv = / usr / lib / ifmail / ifmail -r $ nexthop($ recipient) bsmtp unix-nn--管道 标志=Fq。用户=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient scalemail-backend unix-nn-2 管道 标志=R 用户=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension} mailman unix-nn--管道 标志=FR 用户=列表 argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${用户} # Dovecot LDA dovecot unix-nn--管道 标志=DRhu 用户=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient} #smtp inet n - n - 1 postscreen #smtpd 传递 - - n - - smtpd #dnsblog unix - - n - 0 dnsblog #tlsproxy unix--n-0 tlsproxy
mm.cfg
也相当简单:
MTA='后缀' POSTFIX_STYLE_VIRTUAL_DOMAINS = ['my.host.tld']
Dovecot 配置为仅通过mysql
- 验证用户身份,但 mailman 别名相同。该域是 Postfix 虚拟域。
有什么提示可以查看哪里吗?要测试什么?它以前使用相同的配置工作,但现在我使用 dovecot 2.0 中的 dovecot-lda,它不再工作了,但这也可能是另一个问题,一些配置发生了变化。
答案1
这不是 dovecot 问题或 Postfix 问题。这是与 mailman 的消息传递相关的问题。我仍然不确定它为什么曾经有效,但现在我已经让它正常工作了:
如果我遵循所有这些步骤并将新生成的 transports-mailman 文件添加到 Postfix,它就可以工作。
答案2
- smtp 身份验证还能用吗?
- dovecot 登录还能用吗?用户可以通过 imap 或 pop3 接收邮件吗?
/usr/lib/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT"
使用您域中的真实电子邮件地址进行手动测试。
如果 (2) 或 (3) 失败,那么这就是鸽舍问题。