后缀?Dovecot LMTP:用户不存在:uid@domain

eud*_*xos 10 email postfix dovecot

我正在尝试让 Postfix 通过 Dovecot 的 LMTP 发送本地邮件(其中包括用筛子替换 procmail)。到目前为止,我一直在使用mailbox_command = procmail - a "$EXTENSION",交付给本地~/Maildirs。

http://wiki2.dovecot.org/HowTo/PostfixDovecotLMTP之后,我在/etc/dovecot/conf.d/10-master.conf

service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group=postfix
    user=postfix
    mode=0600
  }
Run Code Online (Sandbox Code Playgroud)

并添加到 /etc/postfix/main.cf

mailbox_transport = lmtp:unix:private/dovecot-lmtp
Run Code Online (Sandbox Code Playgroud)

现在,这几乎有效(Postfix 与 LMTP 套接字对话),但 LMTP 对eudoxos@mydomain.eu包含域的“用户”感到困惑:

Jan 11 08:22:17 s18015955 postfix/lmtp[7374]: 3D84E19B0290E: to=<eudoxos@mydomain.eu>, orig_to=<fristname.lastname@mydomain.eu>, 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 <eudoxos@mydomain.eu> User doesn't exist: eudoxos@mydomain.eu (in reply to RCPT TO command))
Run Code Online (Sandbox Code Playgroud)

LMTP 应该只查找eudoxos(在 LDAP 中)而不是eudoxos@mydomain.eu. 我怎样才能做到这一点?

如果我使用的是交付程序 (LDA),收件人用户名被指定为参数(如mailbox_command = /usr/lib/dovecot/deliver -f "$SENDER" -a "$RECIPIENT"),但我在使用 LDA 时遇到日志权限问题(Dovecot wiki 不鼓励使用 LDA,因此)。

小智 15

您需要设置:

auth_username_format = %Ln
Run Code Online (Sandbox Code Playgroud)

conf.d/10-auth.conf

这将删除域名和“@”。


eud*_*xos 4

解决方案是设置

user_filter = (&(objectClass=posixAccount)(uid=%n)
Run Code Online (Sandbox Code Playgroud)

/etc/dovecot/dovecot-ldap.conf.ext