Thanks so much for your suggestions. See my comments below.

> On Jun 18, 2022, at 11:46 AM, Viktor Dukhovni <postfix-us...@dukhovni.org> 
> wrote:
> 
> 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.

This is only happening for one user on my server, so I’m not that worried about 
it.

> 
>>> - 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.

I’ll have to check into this.

> 
> 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
> 

I am using virtual users in a postgresql database, so how do I properly setup 
virtual domains instead of listing them after mydestination?

When I added "virtual_mailbox_domains = example.com <http://example.com/>” 
instead of listing the domain after mydestination, incoming emails to users in 
that domain were rejected. How can I use virtual_mailbox_domains in conjunction 
with the users in my postgre database? 

> 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

A friend of mine advised me to use the final three lines to avoid problems when 
sending to yahoo accounts.

> 
> 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?

I have no idea! I put this in when following some tutorial.

> 
>> smtp_tls_security_level = may
>> smtp_use_tls = yes
> 
> The second is obsolete and redundant.

Ok, I removed the second line.

> 
>> smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
> 
> This is silly, just drop it.

Will do.

> 
>> smtpd_milters = inet:localhost:12345
> 
> I guess this is opendkim
> 

Yes, it is.

>> 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?
> 

I have no idea. I never before thought about the importance of the order of 
these lines. Good to know!

> 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:
> 

Done.

>    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.
> 

Ok, I removed this line.

>> smtpd_tls_eecdh_grade = strong
> 
> Best to not set this is explicitly.  The default is always better.
> 

Probably got this from a tutorial somewhere. I will trust your judgment on this 
since I am newbie.

>> smtpd_tls_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1
> 
> Needlessly strict.  Accept the default.

Probably got this from a tutorial somewhere. Again, I will trust your judgment 
on this since I am newbie.

> 
>> smtpd_tls_security_level = may
>> smtpd_use_tls = yes
> 
> The second is obsolete and redundant.

That makes sense.

> 
>> smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
> 
> No longer needed.  TLS session tickets are better.
> 

Ok

>> tls_medium_cipherlist = AES128+EECDH:AES128+EDH
> 
> The default would be better IMNSHO.
> 

Ok

>> 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
> 

Ok, I added the :local wherever this occurs.

>> 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.
> 

I removed this line.

>>    -o sender_bcc_maps=hash:/etc/postfix/regexp_sender_bcc
> 
> This has no effect, sender BCC is handled in cleanup(8).
> 

Ok

>> 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".
> 

Are you saying I should add the following line to the submission service?

-o 
smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject

>> 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.

Ok

> 
> -- 
>    Viktor.

Thanks again for your help and suggestions! I really appreciate it!

Austin Witmer

Reply via email to