我正在尝试让 Postfix 通过 Dovecot 的 LMTP 传递本地邮件(其中包括用 sieve 替换 procmail)。到目前为止,我一直在使用mailbox_command = procmail - a "$EXTENSION"
,传递到本地~/Maildir
s。
下列的http://wiki2.dovecot.org/HowTo/PostfixDovecotLMTP,我配置了(postfix 是 chrooted)/etc/dovecot/conf.d/10-master.conf
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
group=postfix
user=postfix
mode=0600
}
并添加到/etc/postfix/main.cf
mailbox_transport = lmtp:unix:private/dovecot-lmtp
[email protected]
现在,几乎可以正常工作(Postfix 与 LMTP 套接字对话),但是 LMTP 对于包含域的“用户”感到困惑:
Jan 11 08:22:17 s18015955 postfix/lmtp[7374]: 3D84E19B0290E: to=<[email protected]>, orig_to=<[email protected]>, relay=iota.mydomain.eu[private/dovecot-lmtp], delay=0.01, delays=0/0/0/0, dsn=5.1.1, status=bounced (host iota.mydomain.eu[private/dovecot-lmtp] said: 550 5.1.1 <[email protected]> User doesn't exist: [email protected] (in reply to RCPT TO command))
LMTP 应该只查找eudoxos
(在 LDAP 中)而不是[email protected]
。我该如何实现?
如果我使用递送程序(LDA),则收件人用户名被指定为参数(如mailbox_command = /usr/lib/dovecot/deliver -f "$SENDER" -a "$RECIPIENT"
),但我在使用 LDA 时遇到了日志权限问题(出于这个原因,Dovecot wiki 不鼓励使用 LDA)。
答案1
您需要设置:
auth_username_format = %Ln
在conf.d/10-auth.conf
这将删除域名和“@”。
答案2
解决方案是设置
user_filter = (&(objectClass=posixAccount)(uid=%n)
在/etc/dovecot/dovecot-ldap.conf.ext
。