On Sat, Jun 18, 2022 at 10:25:03AM -0600, Austin Witmer wrote:
> > - You'll need to disable "sender_bcc" in all but one of the delivery stages
> > via "receive_override_options".
>
> My setup seems to be working not that I have added the
> "-o receive_override_options=no_address_mappingsā to all but one of
> the delivery stages.
While that may resolve the immediate issue, there are additional
improvments you might consider.
> > - You should try to avoid splitting the envelope for different
> > content_filter recipients Of the same message, by using
> > filters that can handle multiple recipients, and transport
> > one input multi-recipient message to one output multi-recipient
> > message.
- Your "gpg" content filter needlessly splits the envelope by recipient
domain.
- You're doing DKIM signing twice.
> > - You can get more recipient deduplication via
> > "enable_original_recipient = no", see the docs for
> > corner-case caveats.
You could more aggressively deduplicate envelope recipients.
On Sat, Jun 18, 2022 at 09:43:02AM -0600, Austin Witmer wrote:
> Here is the output of posfconf -nf
>
> content_filter = amavis:[127.0.0.1]:10024
The explicit nexthop here avoids envelope splits modulo the
recipient concurrency limit, which could be increased for
this transport:
amavis_destination_recipient_limit = 1000
> mailbox_transport = lmtp:unix:private/dovecot-lmtp
Your LMTP delivery is via local(8), which delivers one recipient at a
time (after performing local alias expansion). If you move to
virtual(5) aliases and virtual mailbox domains, your LMTP delivery
will more efficiently support multi-recipient messages.
> mydestination = $myhostname, sunlightmail.net, mail, localhost.localdomain,
> localhost, encryptedmail.info, animaswoodcraft.com, animascreations.com,
> appalachianmeats.com, mcmennonitechurch.org, thefabshop.net, postal22.com,
> rollingpastures.net
Most of these domains could become virtual alias or virtual mailbox
domains. I don't recommend creating a multitude of "local" domains,
they end up giving each user multiple redundant email addresses, even in
domains the user never intends to receive mail for. With virtual alias
and virtual mailbox domains, each domain has a separate user namespace.
Instead migrate to at most one local domain, and rewrite specific
virtual addresses to a local address when what you need is local
delivery (to a pipe, a ":include:" list, .forward file or similar). For
simple LMTP recipients avoid local(8) entirely.
> sender_bcc_maps = hash:/etc/postfix/regexp_sender_bcc
> smtp_destination_concurrency_failed_cohort_limit = 10
> smtp_destination_concurrency_limit = 1
> smtp_destination_rate_delay = 1s
Do you really need this as a global default?
> smtp_tls_cert_file = /etc/letsencrypt/live/mail.sunlightmail.net/fullchain.pem
> smtp_tls_key_file = /etc/letsencrypt/live/mail.sunlightmail.net/privkey.pem
Why do you need a TLS client certificate issued by Let's Encrypt?
What receiving system expects this?
> smtp_tls_security_level = may
> smtp_use_tls = yes
The second is obsolete and redundant.
> smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
This is silly, just drop it.
> smtpd_milters = inet:localhost:12345
I guess this is opendkim
> smtpd_recipient_restrictions =
> permit_mynetworks,
> reject_invalid_hostname,
> reject_non_fqdn_hostname,
> reject_non_fqdn_sender,
> reject_rbl_client sbl.spamhaus.org,
> reject_unknown_sender_domain,
> reject_unknown_recipient_domain,
> permit_sasl_authenticated,
> reject_unauth_destination,
> check_policy_service inet:[127.0.0.1]:10023,
> check_policy_service unix:private/policy-spf
Why is "permit_sasl_authenticated" after the SBL check?
Why is the SBL check before "reject_unauth_destination",
"reject_unknown_sender_domain" and "reject_unknown_recipient_domain",
those are quick local checks and should generally come before the SBL
check.
Actually, I'd only use "reject_unknown_recipient_domain" for
submission, no reason to defer your own domains just because
of a DNS glitch (reject_unauth_destination will only allow
your own domains).
> smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated,
> defer_unauth_destination
Change "defer" to reject here. Also, with Postfi 3.6 or later,
consider setting the compatibility level to 3.6, which gives:
smtpd_relay_before_recipient_restrictions =
${{$compatibility_level} <level {3.6} ? {no} : {yes}}
> smtpd_tls_CApath = /etc/ssl/certs
> smtpd_tls_key_file = /etc/letsencrypt/live/mail.sunlightmail.net/privkey.pem
> smtpd_tls_cert_file =
> /etc/letsencrypt/live/mail.sunlightmail.net/fullchain.pem
> smtpd_tls_dh1024_param_file = /etc/postfix/dh_2048.pem
> smtpd_tls_dh512_param_file = /etc/postfix/dh_512.pem
The "512" variant is no longer pertinent.
> smtpd_tls_eecdh_grade = strong
Best to not set this is explicitly. The default is always better.
> smtpd_tls_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1
Needlessly strict. Accept the default.
> smtpd_tls_security_level = may
> smtpd_use_tls = yes
The second is obsolete and redundant.
> smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
No longer needed. TLS session tickets are better.
> tls_medium_cipherlist = AES128+EECDH:AES128+EDH
The default would be better IMNSHO.
> And here is the output of postconf -Mf
>
> smtp inet n - - - - smtpd
> -o content_filter=gpgit-pipe
> -o cleanup_service_name=subcleanup
Consider giving the "content_filter" an explicit nexthop:
-o content_filter=gpgit-pipe:local
> submission inet n - n - - smtpd
> -o syslog_name=postfix/submission
> -o smtpd_tls_security_level=encrypt
> -o smtpd_sasl_auth_enable=yes
> -o
> smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
> -o smtpd_client_restrictions=permit_sasl_authenticated,reject
The client restrictions are more strict than the recipient restrictions.
Configure just the latter to the single desired value. Also the
main.cf "relay restrictions" are also in force, consider adding
an override (to empty) here.
> -o content_filter=gpgit-pipe
See above re explicit nexthop.
> -o cleanup_service_name=subcleanup
> -o smtpd_enforce_tls=yes
The "enfoce_tls" is Obsolete and redundant.
> -o sender_bcc_maps=hash:/etc/postfix/regexp_sender_bcc
This has no effect, sender BCC is handled in cleanup(8).
> smtps inet n - - - - smtpd
> -o syslog_name=postfix/smtps
> -o smtpd_tls_wrappermode=yes
> -o smtpd_sasl_auth_enable=yes
> -o smtpd_client_restrictions=permit_sasl_authenticated,reject
> -o milter_macro_daemon_name=ORIGINATING
> -o content_filter=gpgit-pipe
> -o cleanup_service_name=subcleanup
Where is the override of "recipient restrictions" (and relay
restrictions). This should be identical to the submission service
modulo "wrapper mode".
> amavis unix - - - - 2 smtp
> -o smtp_send_xforward_command=yes
> -o smtp_tls_security_level=none
> -o cleanup_service_name=subcleanup
> -o receive_override_options=no_address_mappings
This is a delivery agent, it does not use cleanup or address
mappings. The last two overrides are pointless.
--
Viktor.