> On 11 Mar 2020, at 3:33 am, Noel Jones <njo...@megan.vbhcs.org> wrote:
> 
> On 3/10/2020 12:03 AM, Jay wrote:
>>> On 10 Mar 2020, at 2:02 pm, Noel Jones <njo...@megan.vbhcs.org> wrote:
>>> 
>>> On 3/9/2020 9:09 PM, Jay wrote:
>>>> Hi folks,
>>>> I’m having a strange situation on one of my macOS X Servers (10.13.6) 
>>>> running postfix 3.1.1.
>>>> The server is configured to only use virtual_domains and virtual. When an 
>>>> email is received externally on port 25 for one of those domains, it’s 
>>>> accepted and handed off to Dovecot happily. All such received mail works 
>>>> perfectly. Here is a log excerpt of a successful receipt:
>>>> 2020-03-10 11:53:47.417928+1000 0x3afa0e   Info        0x0                 
>>>>   96460  smtpd: connect from office.externaldomain.com.au 
>>>> <http://office.externaldomain.com.au>[203.1.1.1]
>>>> 2020-03-10 11:53:47.985328+1000 0x3afa0e   Info        0x0                 
>>>>   96460  smtpd: F075E1803D04: client=office.externaldomain.com.au 
>>>> <http://office.externaldomain.com.au>[203.1.1.1]
>>>> 2020-03-10 11:53:48.001337+1000 0x3afdd7   Info        0x0                 
>>>>   96498  cleanup: F075E1803D04: 
>>>> message-id=<968781c4-1a74-42be-b4ce-141ea65e9...@externaldomain.com.au 
>>>> <mailto:968781c4-1a74-42be-b4ce-141ea65e9...@externaldomain.com.au>>
>>>> 2020-03-10 11:53:48.005938+1000 0x35759a   Info        0x0                 
>>>>   74101  qmgr: F075E1803D04: from=<j...@externaldomain.com.au 
>>>> <mailto:j...@externaldomain.com.au>>, size=859, nrcpt=1 (queue active)
>>>> 2020-03-10 11:53:48.032335+1000 0x3afa0e   Info        0x0                 
>>>>   96460  smtpd: disconnect from office.externaldomain.com.au 
>>>> <http://office.externaldomain.com.au>[203.1.1.1] ehlo=2 starttls=1 mail=1 
>>>> rcpt=1 data=1 quit=1 commands=7
>>>> 2020-03-10 11:53:49.699136+1000 0x3b00c5   Info        0x0                 
>>>>   96565  smtpd: connect from localhost[127.0.0.1]
>>>> 2020-03-10 11:53:49.702840+1000 0x3b00c5   Info        0x0                 
>>>>   96565  smtpd: AB8771803D0F: client=localhost[127.0.0.1]
>>>> 2020-03-10 11:53:49.705075+1000 0x3afdd7   Info        0x0                 
>>>>   96498  cleanup: AB8771803D0F: 
>>>> message-id=<968781c4-1a74-42be-b4ce-141ea65e9...@externaldomain.com.au 
>>>> <mailto:968781c4-1a74-42be-b4ce-141ea65e9...@externaldomain.com.au>>
>>>> 2020-03-10 11:53:49.705801+1000 0x3b00c5   Info        0x0                 
>>>>   96565  smtpd: disconnect from localhost[127.0.0.1] ehlo=1 mail=1 rcpt=1 
>>>> data=1 quit=1 commands=5
>>>> 2020-03-10 11:53:49.706072+1000 0x35759a   Info        0x0                 
>>>>   74101  qmgr: AB8771803D0F: from=<j...@externaldomain.com.au 
>>>> <mailto:j...@externaldomain.com.au>>, size=1555, nrcpt=1 (queue active)
>>>> 2020-03-10 11:53:49.719987+1000 0x3b006e   Info        0x0                 
>>>>   96562  smtp: F075E1803D04: to=<j...@home.myvirtualdomain.com 
>>>> <mailto:j...@home.myvirtualdomain.com>>, orig_to=<j...@myvirtualdomain.com 
>>>> <mailto:j...@myvirtualdomain.com>>, relay=127.0.0.1[127.0.0.1]:10024, 
>>>> delay=2.1, delays=0.36/0/0/1.7, dsn=2.0.0, status=sent (250 2.0.0 from 
>>>> MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as AB8771803D0F)
>>>> 2020-03-10 11:53:49.720777+1000 0x35759a   Info        0x0                 
>>>>   74101  qmgr: F075E1803D04: removed
>>>> 2020-03-10 11:53:49.825969+1000 0x35759a   Info        0x0                 
>>>>   74101  qmgr: AB8771803D0F: removed
>>>> However, when I use the `mail` command on the server, specifically `mail 
>>>> j...@myvirtualdomain.com <mailto:j...@myvirtualdomain.com>`, I get a mail 
>>>> loops back to itself error:
>>>> 2020-03-10 11:55:43.060996+1000 0x3b04ce   Info        0x0                 
>>>>   96627  cleanup: 061A21803DE0: 
>>>> message-id=<20200310015543.061a21803...@home.myvirtualdomain.com 
>>>> <mailto:20200310015543.061a21803...@home.myvirtualdomain.com>>
>>>> 2020-03-10 11:55:43.062048+1000 0x3b04cb   Info        0x0                 
>>>>   96626  qmgr: 061A21803DE0: from=<r...@home.myvirtualdomain.com 
>>>> <mailto:r...@home.myvirtualdomain.com>>, size=338, nrcpt=1 (queue active)
>>>> 2020-03-10 11:55:43.972784+1000 0x3afa0e   Info        0x0                 
>>>>   96460  smtpd: connect from home.myvirtualdomain.com 
>>>> <http://home.myvirtualdomain.com>[10.0.5.201]
>>>> 2020-03-10 11:55:43.973557+1000 0x3b04d3   Default     0x0                 
>>>>   96629  smtp: warning: host home.myvirtualdomain.com 
>>>> <http://home.myvirtualdomain.com>[10.0.5.201]:25 greeted me with my own 
>>>> hostname home.myvirtualdomain.com <http://home.myvirtualdomain.com>
>>>> 2020-03-10 11:55:43.974021+1000 0x3b04d3   Default     0x0                 
>>>>   96629  smtp: warning: host home.myvirtualdomain.com 
>>>> <http://home.myvirtualdomain.com>[10.0.5.201]:25 replied to HELO/EHLO with 
>>>> my own hostname home.myvirtualdomain.com <http://home.myvirtualdomain.com>
>>>> 2020-03-10 11:55:44.013568+1000 0x3b04d3   Info        0x0                 
>>>>   96629  smtp: 061A21803DE0: to=<j...@myvirtualdomain.com 
>>>> <mailto:j...@myvirtualdomain.com>>, relay=home.myvirtualdomain.com 
>>>> <http://home.myvirtualdomain.com>[10.0.5.201]:25, delay=1.5, 
>>>> delays=0.59/0.04/0.87/0, dsn=5.4.6, status=bounced (mail for 
>>>> myvirtualdomain.com <http://myvirtualdomain.com> loops back to myself)
>>>> 2020-03-10 11:55:44.013989+1000 0x3afa0e   Info        0x0                 
>>>>   96460  smtpd: disconnect from home.myvirtualdomain.com 
>>>> <http://home.myvirtualdomain.com>[10.0.5.201] ehlo=1 quit=1 commands=2
>>>> 2020-03-10 11:55:44.015809+1000 0x3b04ce   Info        0x0                 
>>>>   96627  cleanup: 039A91803DE7: 
>>>> message-id=<20200310015544.039a91803...@home.myvirtualdomain.com 
>>>> <mailto:20200310015544.039a91803...@home.myvirtualdomain.com>>
>>>> 2020-03-10 11:55:44.016665+1000 0x3b04cb   Info        0x0                 
>>>>   96626  qmgr: 039A91803DE7: from=<>, size=2383, nrcpt=1 (queue active)
>>>> 2020-03-10 11:55:44.017420+1000 0x3b04cb   Info        0x0                 
>>>>   96626  qmgr: 061A21803DE0: removed
>>>> This is preventing all automated system emails from being delivered.
>>>> The DNS is seemingly correct. The relevant myvirtualdomain.com 
>>>> <http://myvirtualdomain.com> is defined in virtual_domains. I’m assuming 
>>>> that the fact that everything works via smtp indicates that the 
>>>> configuration is correct?
>>>> Is this even a postfix config issue? Or is it possibly a problem somewhere 
>>>> else, i.e. with the `mail` command? Where can I begin to look to 
>>>> troubleshoot this further? What configuration info can I provide that 
>>>> might help? A full dump of `postconf -n`? All of master.cf?
>>>> Thank you,
>>>> Jay
>>> 
>>> 
>>> 
>>> 
>>> Turn off debug logging and start here:
>>> http://www.postfix.org/DEBUG_README.html#mail
>> I’m not sure how to turn off debug logging - the macOS X included version of 
>> postfix logs to Apple’s unified system log. The way I view logs in realtime 
>> is:
>> /usr/bin/log stream --predicate '(process == "smtpd") || (process == "smtp") 
>> || (process == "qmgr") || (process == "cleanup") || (process == "postqueue") 
>> || (process == "postsuper") || (process == "local")' --debug --info
>> When I run that WITHOUT the --debug flag, the output is the same. Is there 
>> another process I could add to that list that might provide more info?
>> (I’d LOVE to figure out how to get postfix to bypass that annoying logging 
>> system and to just go back to writing its own log file at /var/log/mail.log.)
>> Here’s output of `postconf -Mf`:
>> # postconf -Mf
>> smtp       inet  n       -       n       -       1       postscreen
>> smtpd      pass  -       -       n       -       -       smtpd
>> dnsblog    unix  -       -       n       -       0       dnsblog
>> tlsproxy   unix  -       -       n       -       0       tlsproxy
>> submission inet  n       -       n       -       -       smtpd
>>    -o smtpd_tls_security_level=encrypt
>>    -o smtpd_enforce_tls=yes
>>    -o smtpd_sasl_auth_enable=yes
>>    -o content_filter=
>>    -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
>> smtp       unix  -       -       n       -       -       smtp
>> proxywrite unix  -       -       n       -       1       proxymap
>> pickup     fifo  n       -       n       60      1       pickup
>>    -o content_filter=smtp-amavis:[127.0.0.1]:10024
>> cleanup    unix  n       -       n       -       0       cleanup
>> qmgr       fifo  n       -       n       300     1       qmgr
>> tlsmgr     unix  -       -       n       1000?   1       tlsmgr
>> rewrite    unix  -       -       n       -       -       trivial-rewrite
>> bounce     unix  -       -       n       -       0       bounce
>> defer      unix  -       -       n       -       0       bounce
>> trace      unix  -       -       n       -       0       bounce
>> verify     unix  -       -       n       -       1       verify
>> sacl-cache unix  -       -       n       -       1       sacl-cache
>> flush      unix  n       -       n       1000?   0       flush
>> proxymap   unix  -       -       n       -       -       proxymap
>> relay      unix  -       -       n       -       -       smtp
>>    -o smtp_fallback_relay=
>> showq      unix  n       -       n       -       -       showq
>> error      unix  -       -       n       -       -       error
>> retry      unix  -       -       n       -       -       error
>> discard    unix  -       -       n       -       -       discard
>> local      unix  -       n       n       -       -       local
>> virtual    unix  -       n       n       -       -       virtual
>> lmtp       unix  -       -       n       -       -       lmtp
>> anvil      unix  -       -       n       -       1       anvil
>> scache     unix  -       -       n       -       1       scache
>> dovecot    unix  -       n       n       -       25      pipe flags=DRhu
>>    user=_dovecot:mail
>>    
>> argv=/Applications/Server.app/Contents/ServerRoot/usr/libexec/dovecot/dovecot-lda
>>    -d ${user}
>> policy     unix  -       n       n       -       -       spawn 
>> user=nobody:mail
>>    argv=/usr/bin/perl
>>    
>> /Applications/Server.app/Contents/ServerRoot/usr/libexec/postfix/greylist.pl
>> smtp-amavis unix -       -       y       -       2       smtp
>>    -o smtp_data_done_timeout=1200
>>    -o smtp_send_xforward_command=yes
>>    -o disable_dns_lookups=yes
>>    -o max_use=20
>> 127.0.0.1:10025 inet n   -       y       -       -       smtpd
>>    -o content_filter=
>>    -o smtpd_tls_security_level=none
>>    -o smtpd_delay_reject=no
>>    -o smtpd_client_restrictions=permit_mynetworks,reject
>>    -o smtpd_helo_restrictions=
>>    -o smtpd_sender_restrictions=
>>    -o smtpd_recipient_restrictions=permit_mynetworks,reject
>>    -o smtpd_data_restrictions=reject_unauth_pipelining
>>    -o smtpd_end_of_data_restrictions=
>>    -o smtpd_restriction_classes=
>>    -o mynetworks=127.0.0.0/8
>>    -o smtpd_error_sleep_time=0
>>    -o smtpd_soft_error_limit=1001
>>    -o smtpd_hard_error_limit=1000
>>    -o smtpd_client_connection_count_limit=0
>>    -o smtpd_client_connection_rate_limit=0
>>    -o 
>> receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters
>>    -o local_header_rewrite_clients=
>>    -o smtpd_milters=
>>    -o local_recipient_maps=
>>    -o relay_recipient_maps=
>> And `postconf -n`:
>> alias_maps = hash:/Library/Server/Mail/Config/postfix/aliases 
>> hash:/Library/Server/Mail/Data/listserver/aliases/list_server_aliases
>> biff = no
>> command_directory = /Applications/Server.app/Contents/ServerRoot/usr/sbin
>> compatibility_level = 2
>> config_directory = /Library/Server/Mail/Config/postfix
>> content_filter = smtp-amavis:[127.0.0.1]:10024
>> daemon_directory = 
>> /Applications/Server.app/Contents/ServerRoot/usr/libexec/postfix
>> data_directory = /Library/Server/Mail/Data/mta
>> debug_peer_level = 2
>> debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd 
>> $daemon_directory/$process_name $process_id & sleep 5
>> disable_vrfy_command = yes
>> dovecot_destination_recipient_limit = 1
>> enable_server_options = yes
>> header_checks = pcre:/Library/Server/Mail/Config/postfix/custom_header_checks
>> html_directory = 
>> /Applications/Server.app/Contents/ServerRoot/usr/share/doc/postfix/html
>> imap_submit_cred_file = /Library/Server/Mail/Config/postfix/submit.cred
>> inet_interfaces = all
>> inet_protocols = ipv4
>> mail_owner = _postfix
>> mailbox_size_limit = 0
>> mailbox_transport = dovecot
>> mailq_path = /Applications/Server.app/Contents/ServerRoot/usr/bin/mailq
>> manpage_directory = 
>> /Applications/Server.app/Contents/ServerRoot/usr/share/man
>> message_size_limit = 31457280
>> mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
>> mydomain = home.mydomain.com
>> mydomain_fallback = localhost
>> myhostname = home.mydomain.com
>> mynetworks = 127.0.0.0/8, 10.0.5.1/32, 10.0.5.31/32, [::1]/128
>> newaliases_path = 
>> /Applications/Server.app/Contents/ServerRoot/usr/bin/newaliases
>> proxy_interfaces = 124.148.20.193
>> queue_directory = /Library/Server/Mail/Data/spool
>> readme_directory = 
>> /Applications/Server.app/Contents/ServerRoot/usr/share/doc/postfix
>> recipient_canonical_maps = 
>> hash:/Library/Server/Mail/Config/postfix/system_user_maps
>> recipient_delimiter = +
>> relayhost =
>> sample_directory = 
>> /Applications/Server.app/Contents/ServerRoot/usr/share/doc/postfix/examples
>> sendmail_path = 
>> /Applications/Server.app/Contents/ServerRoot/usr/sbin/sendmail
>> setgid_group = _postdrop
>> smtp_tls_CAfile = /Library/Server/Mail/Config/postfix/ca-certificates.pem
>> smtp_tls_loglevel = 1
>> smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
>> smtp_tls_protocols = !SSLv2, !SSLv3
>> smtp_tls_security_level = may
>> smtpd_data_restrictions = reject_unauth_pipelining, permit
>> smtpd_enforce_tls = no
>> smtpd_helo_required = yes
>> smtpd_pw_server_security_options = cram-md5,digest-md5,gssapi,login,plain
>> smtpd_recipient_restrictions = permit_sasl_authenticated 
>> reject_non_fqdn_recipient check_recipient_access 
>> hash:/Library/Server/Mail/Config/postfix/access permit_mynetworks 
>> reject_unauth_destination reject_non_fqdn_sender check_sender_access 
>> hash:/Library/Server/Mail/Config/postfix/sender_access check_sender_access 
>> regexp:/Library/Server/Mail/Config/postfix/regexp_sender 
>> reject_non_fqdn_hostname reject_invalid_helo_hostname check_helo_access 
>> regexp:/Library/Server/Mail/Config/postfix/helo_access reject_rbl_client 
>> zen.spamhaus.org reject_rbl_client bl.spamcop.net permit
>> smtpd_require_virtual_map = yes
>> smtpd_sasl_auth_enable = yes
>> smtpd_tls_CAfile = 
>> /etc/certificates/home.mydomain.com.A892E14870AED314279463AACA7B5424BDA1C1D0.chain.pem
>> smtpd_tls_auth_only = yes
>> smtpd_tls_cert_file = 
>> /etc/certificates/home.mydomain.com.A892E14870AED314279463AACA7B5424BDA1C1D0.cert.pem
>> smtpd_tls_ciphers = medium
>> smtpd_tls_exclude_ciphers = SSLv2, 3DES, aNULL, ADH, eNULL, EXPORT
>> smtpd_tls_key_file = 
>> /etc/certificates/home.mydomain.com.A892E14870AED314279463AACA7B5424BDA1C1D0.key.pem
>> smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
>> smtpd_tls_protocols = !SSLv2, !SSLv3
>> smtpd_use_pw_server = yes
>> smtpd_use_tls = yes
>> soft_bounce = yes
>> tls_random_source = dev:/dev/urandom
>> unknown_local_recipient_reject_code = 550
>> use_sacl_cache = yes
>> virtual_alias_domains = $virtual_alias_maps 
>> hash:/Library/Server/Mail/Config/postfix/virtual_domains
>> virtual_alias_maps = $virtual_maps 
>> hash:/Library/Server/Mail/Config/postfix/virtual 
>> regexp:/Library/Server/Mail/Config/postfix/regexp_virtual 
>> hash:/Library/Server/Mail/Config/postfix/virtual_users 
>> hash:/Library/Server/Mail/Data/listserver/aliases/list_server_virtual
>> Does the fact that everything works over SMTP but not via the `mail` command 
>> indicate anything or provide any leads?
>> Thank you,
>> Jay
> 
> 
> 
> Sorry, I'm not familiar with macOS logging and thought it was debug logging.  
> Postfix 3.4 and newer can log to a file instead, with some limitations.
> http://www.postfix.org/MAILLOG_README.html

That’s strange that that page proposes it as a macOS workaround, but the macOS 
postfix version concluded at 3.1.1 (Postfix was removed from later versions of 
macOS Server). That would have been great.

> From the logging it looks like the problem mail doesn't pass through your 
> content filter, so that's the difference. That seems strange since you have a 
> content_filter set on pickup, which is were I would expect the mail command 
> to send mail.

OK. I’ve worked out what the problem is, thanks to you raising this point.

macOS (without installing macOS server) comes with postfix installed, with its 
configuration directory at /etc/postfix and all the relevant binaries at 
/usr/sbin. When you install macOS Server, it installs its own postfix, for 
which the binaries live inside 
/Applications/Server.app/Contents/ServerRoot/usr/ and the configuration exists 
at /Library/Server/Mail/Config/postfix.

I looked at /etc/postfix/master, the config which SHOULD NOT have been active, 
and lo and behold, no content_filter was defined for pickup there. So, I 
defined one, an invalid one, tested again, and the logs reported the invalid 
filter, so it was looking at the WRONG master.cf.

But why?

When macOS Server is installed, and the mail service is turned on, there is a 
new launchd job that runs `master -c /Library/Server/Mail/Config/postfix` when 
files are dropped in /Library/Server/Mail/Data/spool/maildrop. Regardless 
whether macOS server is installed, there is another job set to run `master` 
(with no -c, so it uses default /etc/postfix for config) when files are dropped 
in /var/spool/postfix/maildrop.

SO, it’s looks like the `mail` command was dropping the outgoing messages in 
/var/spool/postfix/maildrop instead of 
/Library/Server/Mail/Data/spool/maildrop, and thus, the system was then 
invoking the WRONG postfix config.

My solution was to rename /etc/postfix to /etc/postfix.original and make a 
symbolic link from /etc/postfix to /Library/Server/Mail/Config/postfix. This 
has resolved the problem by ensuring that the macOS Server's postfix 
configuration is the configuration that is always checked.

But, it seems like the true problem is finding out why the `mail` command isn’t 
putting messages into /Library/Server/Mail/Data/spool/maildrop instead of 
/var/spool/postfix/maildrop. That’s what seems to occur on my other macOS 
Servers, but that’s presumably well beyond the scope of this list, but if 
anyone does have any idea how to choose where `mail` drops outbound messages, 
or could point me in the right direction, I would be grateful.

> I would normally assume you have receive_override_options=no_address_mappings
> set somewhere, but I don't see that. Maybe I missed it.

I don’t have that on this server. On another server, I had that defined as an 
option for smtpd:

smtpd     pass  -       -       n       -       -       smtpd
  -o receive_override_options=no_address_mappings

But that was due to an incompatibility between the aliases, virtual aliases, 
and the list server, or something like that. Where do you think I should have 
that option, and why?

> Looks like you've disabled the content_filter on submission. If that's where 
> the mail is going, that might explain the problem.

True, that is intentional. Since the use of submission requires authentication, 
I trust messages received from it. But thank you again, as it was this line of 
thinking that progressed this for me.

Thank you!!!

Reply via email to