lmtp and recipient_delimiter

Juri Haberland juri at koschikode.com
Wed Mar 11 20:32:19 EET 2020


Hi list,

I have a small problem with recipient_delimiters contained in usernames.
Recently I have extended recipient_delimiter from "+" to "+-" in both
Postfix and Dovecot (using lmtp) and now any user that have a '-' in it's
username can't receive mail anymore, because lmtp truncates the localpart
after the '-' and of course can't find the first half in the user database.

To illustrate: given an account "foo-bar at example.com", I get the following
log entry from postfix:
Mar  9 09:31:43 batleth postfix/lmtp[6196]: 9A7BA33E005B:
to=<foo-bar at example.com>,
relay=batleth.sapienti-sat.org[private/dovecot-lmtp], delay=20,
delays=20/0.01/0.01/0.08, dsn=5.1.1, status=bounced (host
batleth.sapienti-sat.org[private/dovecot-lmtp] said: 550 5.1.1
<foo-bar at example.com> User doesn't exist: foo at example.com (in reply to RCPT
TO command))

Is there any way to tell lmtp to first look for
<user><delimiter><extension> and if that fails look for <user> only (the
reverse order would be ok, too)?


Thanks in advance,
  Juri


doveconf -n:
# 2.3.10 (0da0eff44): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.10 (bf8ef1c2)
# OS: Linux 4.4.0-174-generic x86_64 Ubuntu 16.04.6 LTS ext4
# Hostname: batleth.sapienti-sat.org
auth_default_realm = sapienti-sat.org
first_valid_uid = 115
imap_idle_notify_interval = 29 mins
last_valid_uid = 115
mail_location = maildir:/srv/vmail/%Ld/%Ln
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character
vacation subaddress comparator-i;ascii-numeric relational regex imap4flags
copy include variables body enotify environment mailbox date index ihave
duplicate mime foreverypart extracttext
namespace inbox {
  inbox = yes
  location =
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    autoexpunge = 180 days
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    autoexpunge = 365 days
    special_use = \Trash
  }
  prefix = INBOX.
  separator = .
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
plugin {
  sieve = file:~/sieve;active=~/.dovecot.sieve
}
protocols = " imap lmtp sieve"
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
}
service imap-login {
  inet_listener imap {
    address = 127.0.0.1 ::1
  }
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0600
    user = postfix
  }
}
service pop3-login {
  inet_listener pop3 {
    port = 0
  }
}
ssl_cert = </etc/letsencrypt/live/sapienti-sat.org/fullchain.pem
ssl_cipher_list =
EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
ssl_prefer_server_ciphers = yes
userdb {
  args = uid=postfix gid=postfix home=/srv/vmail/dovecot_state/%Ld/%Ln
  driver = static
}
protocol lmtp {
  auth_username_format = %Lu
  mail_plugins = " sieve"
}
protocol imap {
  mail_max_userip_connections = 20
}


More information about the dovecot mailing list