我最近开始在我的 Ubuntu 18.04. LTS 上部署带有 Postfix 和 Dovecot 的邮件服务器。不幸的是,无法接收邮件,我还不知道原因。
设置
多夫科特
在 Dovecot 中,我已在端口 993 上启用 IMAPS、在 127.0.0.1:24 上启用 LMTP 并通过 启用 SMTP 身份验证unix_listener
。身份验证针对 LDAP 服务器,该服务器还应为我的邮件服务器提供所有用户。我的邮件服务器中的设置为
,因为具有此对象类的所有用户都应该能够发送/接收邮件。LDAP条目的 等于邮件地址的本地部分,因此我将其用于过滤器。user_filter
dovecot-ldap.conf.ext
(&(objectClass=rspfMember)(uid=%Ln))
uid
%Ln
后缀
我启用了以下限制:
smtpd_recipient_restrictions =
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client ix.dnsbl.manitu.net,
check_policy_service inet:127.0.0.1:10023,
reject_unverified_recipient,
permit
测试用例
首先,运行sudo doveadm user myusername
会找到我要搜索的用户,并sudo doveadm auth test myusername mypassword
返回auth succeeded
,因此我假设我的 LDAP 设置是正确的。
也可以从帐户发送邮件,因此我可以使用任何邮件客户端通过 SMTP 登录该帐户,因此使用 IMAP 即可成功。
如果我向某个用户发送一封邮件,我可以在日志文件中看到 RBL 限制以及 postgrey 让邮件通过,但之后 Postfix 无法找到该用户(或者 dovecot 无法投递邮件,我真的说不准):
postfix/smtpd[22142]: maps_find: local_recipient_maps: myuser: not found
postfix/smtpd[22142]: dict_proxy_lookup: table=unix:passwd.byname flags=lock|utf8_request [email protected] -> status=1 result=
postfix/smtpd[22142]: maps_find: local_recipient_maps: @mydomain.com: not found
postfix/smtpd[22142]: mail_addr_find: [email protected] -> (not found)
postfix/smtpd[22142]: NOQUEUE: reject: RCPT from senderdomain.de[185.26.XX.XX]: 550 5.1.1 <[email protected]>: Recipient address rejected: User unknown in local recipient table; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<senderdomain.de>
postfix/smtpd[22142]: > senderdomain.de[185.26.XX.XX]: 550 5.1.1 <[email protected]>: Recipient address rejected: User unknown in local recipient table
但是,如果我运行postmap -s btree:/var/lib/postfix/verify_cache
,我会得到结果
_LAST_CACHE_CLEANUP_COMPLETED_ 1552662532
[email protected] 0:0:1552662532:250 2.1.5 OK
因此我认为收件人验证工作正常。此外,在中创建了正确的 maildir /srv/vmail/myuser
。
我可以在哪里找到有关邮件投递失败的更多信息?
提前非常感谢您。
更新
我更新了 LDAP 配置local_recipient_maps
,搜索查询是存储用户邮件的query_filter = (rspfMail=%s)
属性rspfMail
。当我使用测试查询时,我得到:postmap -vq '[email protected]' ldap:/etc/postfix/local_recipient_maps.cf
postmap: dict_ldap_connect: Successful bind to server ldap://192.168.**.**:389 with dn cn=**,ou=**,dc=**
postmap: dict_ldap_connect: Cached connection handle for LDAP source /etc/postfix/local_recipient_maps.cf
postmap: dict_ldap_lookup: /etc/postfix/local_recipient_maps.cf: Searching with filter ([email protected])
postmap: dict_ldap_get_values[1]: Search found 1 match(es)
postmap: dict_ldap_get_values[1]: Leaving dict_ldap_get_values
postmap: dict_ldap_lookup: Search returned nothing
因此,搜索确实找到了一个结果,正如预期的那样,但却没有返回任何内容。我非常感谢任何帮助。
答案1
您应该设置result_attribute:
result_attribute = rspfMail #default is maildrop
result_format = %s # default