Steve Dondley
2021-Apr-05 17:28 UTC
Emails to multiple recipients on same server not getting delivered
When I send an email to a single user on a server, it is received by the
user without a problem. But when sending to multiple users, the emails
disappear into a black hole. The logs contain no errors and indicate the
emails were sent:
Apr 5 13:10:29 email postfix/pipe[31703]: F3A912027D:
to=<pete2 at example.org>, relay=spamassassin, delay=1.6,
delays=0.12/0/0/1.5, dsn=2.0.0, status=sent (delivered via spamassassin
service (X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on
email.example.org X-Spam-Level: X-Spam-Stat))
Apr 5 13:10:29 email postfix/pipe[31703]: F3A912027D:
to=<pete3 at example.org>, relay=spamassassin, delay=1.6,
delays=0.12/0/0/1.5, dsn=2.0.0, status=sent (delivered via spamassassin
service (X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on
email.example.org X-Spam-Level: X-Spam-Stat))
However, when I check the inboxes for the recipients, the email is
nowhere to be found. I tried lifting the receiving/concurrent limits but
to no effect. I have other servers with very similar configurations to
this one but I'm not having issues with them. lmtp is the local delivery
agent.
My postconf:
alias_maps = hash:/etc/aliases
biff = no
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
compatibility_level = 2
daemon_directory = /usr/lib/postfix/sbin
data_directory = /var/lib/postfix
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd
$daemon_directory/$process_name $process_id & sleep 5
default_destination_concurrency_limit = 5
home_mailbox = Maildir/
inet_interfaces = all
lmtp_destination_concurrency_limit = 5
lmtp_destination_recipient_limit = 5
local_destination_concurrency_limit = 5
local_destination_recipient_limit = 5
mail_owner = postfix
mailbox_size_limit = 3145728000
mailbox_transport = lmtp:unix:private/dovecot-lmtp
mailq_path = /usr/bin/mailq
message_size_limit = 26214400
milter_default_action = accept
milter_protocol = 6
mydestination = $myhostname localhost.$mydomain localhost $mydomain
mydomain = example.org
myhostname = email.example.org
mynetworks_style = subnet
myorigin = example.org
non_smtpd_milters = $smtpd_milters
policyd-spf_time_limit = 3600
recipient_bcc_maps = pcre:/etc/postfix/recipient_bcc
recipient_delimiter = +
sendmail_path = /usr/sbin/sendmail
setgid_group = postdrop
smtp_tls_note_starttls_offer = yes
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = yes
smtpd_banner = $myhostname ESMTP
smtpd_milters = unix:/opendkim/opendkim.sock
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated, reject_unauth_destination,
check_policy_service unix:private/policyd-spf
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated
defer_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sender_login_maps = pcre:/etc/postfix/login_maps.pcre
smtpd_sender_restrictions = reject_authenticated_sender_login_mismatch
smtpd_tls_cert_file =
/etc/letsencrypt/live/email.example.org/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/email.example.org/privkey.pem
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
unknown_local_recipient_reject_code = 550
virtual_alias_maps = hash:/etc/postfix/virtual
virtual_mailbox_limit = 26214400
virtual_transport = lmtp:unix:private/dovecot-lmtp
And doveconf:
# 2.3.4.1 (f79e8e7e4): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.4 ()
# OS: Linux 4.19.0-14-cloud-amd64 x86_64 Debian 10.9
# Hostname: email.example.org
auth_mechanisms = plain login
auth_username_format = %Ln
disable_plaintext_auth = no
mail_debug = yes
mail_location = maildir:~/Maildir
mail_privileged_group = mail
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 {
special_use = \Junk
}
mailbox Sent {
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
mailbox Trash {
special_use = \Trash
}
prefix }
passdb {
args = /etc/dovecot/aliases
driver = passwd-file
}
passdb {
driver = pam
}
plugin {
recipient_delimiter = +
sieve = file:~/sieve;active=~/.dovecot.sieve
sieve_default = /var/lib/dovecot/sieve/default.sieve
sieve_default_name = Defaults
sieve_global = /var/lib/dovecot/sieve
}
pop3_client_workarounds = outlook-no-nuls
protocols = " imap lmtp sieve pop3 sieve"
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0666
user = postfix
}
unix_listener auth-userdb {
mode = 0666
}
}
service imap-login {
inet_listener imap {
port = 143
}
inet_listener imaps {
port = 993
ssl = yes
}
}
service imap {
client_limit = 1
}
service lmtp {
client_limit = 1
unix_listener /var/spool/postfix/private/dovecot-lmtp {
group = postfix
mode = 0600
user = postfix
}
}
service managesieve-login {
inet_listener sieve {
port = 4190
}
}
service pop3-login {
inet_listener pop3s {
port = 995
ssl = yes
}
}
service submission-login {
inet_listener submission {
port = 587
}
}
ssl_cert = </etc/letsencrypt/live/email.example.org/fullchain.pem
ssl_client_ca_dir = /etc/ssl/certs
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
userdb {
driver = passwd
}
protocol lmtp {
mail_plugins = " sieve"
}
John Stoffel
2021-Apr-05 18:24 UTC
Emails to multiple recipients on same server not getting delivered
>>>>> "Steve" == Steve Dondley <s at dondley.com> writes:Steve> When I send an email to a single user on a server, it is received by the Steve> user without a problem. But when sending to multiple users, the emails Steve> disappear into a black hole. The logs contain no errors and indicate the Steve> emails were sent: How is postfix delivering email to dovecot? You give your postconf output, but we need to see oyur master.cf file as well. I use the spamass-milter in my postfix config, and my master.cf has something like this: # Updated to support + addressing, 20210402 spamass-dovecot unix - n n - - pipe flags=DRhu user=mail:mail argv=/usr/bin/spamc -u debian-spamd -e /usr/lib/dovecot/deliver -a ${recipient} -d ${user}@${domain} As you can guess, my mail setup runs on Debian Buster. So the details can matter. But all my emails are delivered through spamassisin, then filtered with Sieve on the header into the INBOX or Junk folders. Steve> Apr 5 13:10:29 email postfix/pipe[31703]: F3A912027D: Steve> to=<pete2 at example.org>, relay=spamassassin, delay=1.6, Steve> delays=0.12/0/0/1.5, dsn=2.0.0, status=sent (delivered via spamassassin Steve> service (X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on Steve> email.example.org X-Spam-Level: X-Spam-Stat)) Steve> Apr 5 13:10:29 email postfix/pipe[31703]: F3A912027D: Steve> to=<pete3 at example.org>, relay=spamassassin, delay=1.6, Steve> delays=0.12/0/0/1.5, dsn=2.0.0, status=sent (delivered via spamassassin Steve> service (X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on Steve> email.example.org X-Spam-Level: X-Spam-Stat)) Steve> However, when I check the inboxes for the recipients, the email is Steve> nowhere to be found. I tried lifting the receiving/concurrent limits but Steve> to no effect. I have other servers with very similar configurations to Steve> this one but I'm not having issues with them. lmtp is the local delivery Steve> agent. Steve> My postconf: Steve> alias_maps = hash:/etc/aliases Steve> biff = no Steve> broken_sasl_auth_clients = yes Steve> command_directory = /usr/sbin Steve> compatibility_level = 2 Steve> daemon_directory = /usr/lib/postfix/sbin Steve> data_directory = /var/lib/postfix Steve> debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd Steve> $daemon_directory/$process_name $process_id & sleep 5 Steve> default_destination_concurrency_limit = 5 Steve> home_mailbox = Maildir/ Steve> inet_interfaces = all Steve> lmtp_destination_concurrency_limit = 5 Steve> lmtp_destination_recipient_limit = 5 Steve> local_destination_concurrency_limit = 5 Steve> local_destination_recipient_limit = 5 Steve> mail_owner = postfix Steve> mailbox_size_limit = 3145728000 Steve> mailbox_transport = lmtp:unix:private/dovecot-lmtp Steve> mailq_path = /usr/bin/mailq Steve> message_size_limit = 26214400 Steve> milter_default_action = accept Steve> milter_protocol = 6 Steve> mydestination = $myhostname localhost.$mydomain localhost $mydomain Steve> mydomain = example.org Steve> myhostname = email.example.org Steve> mynetworks_style = subnet Steve> myorigin = example.org Steve> non_smtpd_milters = $smtpd_milters Steve> policyd-spf_time_limit = 3600 Steve> recipient_bcc_maps = pcre:/etc/postfix/recipient_bcc Steve> recipient_delimiter = + Steve> sendmail_path = /usr/sbin/sendmail Steve> setgid_group = postdrop Steve> smtp_tls_note_starttls_offer = yes Steve> smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache Steve> smtp_use_tls = yes Steve> smtpd_banner = $myhostname ESMTP Steve> smtpd_milters = unix:/opendkim/opendkim.sock Steve> smtpd_recipient_restrictions = permit_mynetworks, Steve> permit_sasl_authenticated, reject_unauth_destination, Steve> check_policy_service unix:private/policyd-spf Steve> smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated Steve> defer_unauth_destination Steve> smtpd_sasl_auth_enable = yes Steve> smtpd_sasl_local_domain = $myhostname Steve> smtpd_sasl_path = private/auth Steve> smtpd_sasl_security_options = noanonymous Steve> smtpd_sasl_type = dovecot Steve> smtpd_sender_login_maps = pcre:/etc/postfix/login_maps.pcre Steve> smtpd_sender_restrictions = reject_authenticated_sender_login_mismatch Steve> smtpd_tls_cert_file = Steve> /etc/letsencrypt/live/email.example.org/fullchain.pem Steve> smtpd_tls_key_file = /etc/letsencrypt/live/email.example.org/privkey.pem Steve> smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache Steve> smtpd_use_tls = yes Steve> unknown_local_recipient_reject_code = 550 Steve> virtual_alias_maps = hash:/etc/postfix/virtual Steve> virtual_mailbox_limit = 26214400 Steve> virtual_transport = lmtp:unix:private/dovecot-lmtp Steve> And doveconf: Steve> # 2.3.4.1 (f79e8e7e4): /etc/dovecot/dovecot.conf Steve> # Pigeonhole version 0.5.4 () Steve> # OS: Linux 4.19.0-14-cloud-amd64 x86_64 Debian 10.9 Steve> # Hostname: email.example.org Steve> auth_mechanisms = plain login Steve> auth_username_format = %Ln Steve> disable_plaintext_auth = no Steve> mail_debug = yes Steve> mail_location = maildir:~/Maildir Steve> mail_privileged_group = mail Steve> managesieve_notify_capability = mailto Steve> managesieve_sieve_capability = fileinto reject envelope Steve> encoded-character vacation subaddress comparator-i;ascii-numeric Steve> relational regex imap4flags copy include variables body enotify Steve> environment mailbox date index ihave duplicate mime foreverypart Steve> extracttext Steve> namespace inbox { Steve> inbox = yes Steve> location Steve> mailbox Drafts { Steve> special_use = \Drafts Steve> } Steve> mailbox Junk { Steve> special_use = \Junk Steve> } Steve> mailbox Sent { Steve> special_use = \Sent Steve> } Steve> mailbox "Sent Messages" { Steve> special_use = \Sent Steve> } Steve> mailbox Trash { Steve> special_use = \Trash Steve> } Steve> prefix Steve> } Steve> passdb { Steve> args = /etc/dovecot/aliases Steve> driver = passwd-file Steve> } Steve> passdb { Steve> driver = pam Steve> } Steve> plugin { Steve> recipient_delimiter = + Steve> sieve = file:~/sieve;active=~/.dovecot.sieve Steve> sieve_default = /var/lib/dovecot/sieve/default.sieve Steve> sieve_default_name = Defaults Steve> sieve_global = /var/lib/dovecot/sieve Steve> } Steve> pop3_client_workarounds = outlook-no-nuls Steve> protocols = " imap lmtp sieve pop3 sieve" Steve> service auth { Steve> unix_listener /var/spool/postfix/private/auth { Steve> group = postfix Steve> mode = 0666 Steve> user = postfix Steve> } Steve> unix_listener auth-userdb { Steve> mode = 0666 Steve> } Steve> } Steve> service imap-login { Steve> inet_listener imap { Steve> port = 143 Steve> } Steve> inet_listener imaps { Steve> port = 993 Steve> ssl = yes Steve> } Steve> } Steve> service imap { Steve> client_limit = 1 Steve> } Steve> service lmtp { Steve> client_limit = 1 Steve> unix_listener /var/spool/postfix/private/dovecot-lmtp { Steve> group = postfix Steve> mode = 0600 Steve> user = postfix Steve> } Steve> } Steve> service managesieve-login { Steve> inet_listener sieve { Steve> port = 4190 Steve> } Steve> } Steve> service pop3-login { Steve> inet_listener pop3s { Steve> port = 995 Steve> ssl = yes Steve> } Steve> } Steve> service submission-login { Steve> inet_listener submission { Steve> port = 587 Steve> } Steve> } Steve> ssl_cert = </etc/letsencrypt/live/email.example.org/fullchain.pem Steve> ssl_client_ca_dir = /etc/ssl/certs Steve> ssl_dh = # hidden, use -P to show it Steve> ssl_key = # hidden, use -P to show it Steve> userdb { Steve> driver = passwd Steve> } Steve> protocol lmtp { Steve> mail_plugins = " sieve" Steve> }