I've started working on my bastard Mac postfix relay. For delivery to the local domain, it will only relay to the internal mail server defined in transport if the user exists locally on the postfix box...and I can't figure out why (luckily, the 450 safety net is there!). I could see how it would deliver locally OR relay, but not a conditional as it is. I would imagine this is also why recipient delimiters aren't being acknowledged, and the smtp recipient probe for reject_unverified_recipient. Below is a snippet from the mail logs, followed by postconf -n (specifying the working directory since postconf defaults to /etc/postfix on Mavericks server even though that's not where Apple's implementation puts its config files), and transport.
Any thoughts? Thanks. Logging: Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: >>> START Recipient address RESTRICTIONS <<< Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: generic_checks: name=permit_sasl_authenticated Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: generic_checks: name=permit_sasl_authenticated status=0 Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: generic_checks: name=permit_mynetworks Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: permit_mynetworks: mxout-044-pao.mailhop.org 216.146.32.44 Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: match_hostname: mxout-044-pao.mailhop.org ~? 127.0.0.0/8 Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: match_hostaddr: 216.146.32.44 ~? 127.0.0.0/8 Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: match_hostname: mxout-044-pao.mailhop.org ~? [::1]/128 Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: match_hostaddr: 216.146.32.44 ~? [::1]/128 Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: match_hostname: mxout-044-pao.mailhop.org ~? 192.168.1.0/24 Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: match_hostaddr: 216.146.32.44 ~? 192.168.1.0/24 Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: match_list_match: mxout-044-pao.mailhop.org: no match Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: match_list_match: 216.146.32.44: no match Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: generic_checks: name=permit_mynetworks status=0 Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: generic_checks: name=reject_unauth_destination Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: reject_unauth_destination: dom...@pointyears.net Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: permit_auth_destination: dom...@pointyears.net Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: ctable_locate: leave existing entry key dom...@pointyears.net Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: generic_checks: name=reject_unauth_destination status=0 Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: generic_checks: name=reject_unknown_recipient_domain Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: reject_unknown_address: dom...@pointyears.net Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: ctable_locate: leave existing entry key dom...@pointyears.net Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: generic_checks: name=reject_unknown_recipient_domain status=0 Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: generic_checks: name=reject_unverified_recipient Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: reject_unverified_address: dom...@pointyears.net Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: connect to subsystem private/verify Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: send attr request = query Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: send attr address = dom...@pointyears.net Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: private/verify socket: wanted attribute: status Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: input attribute name: status Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: input attribute value: 0 Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: private/verify socket: wanted attribute: recipient_status Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: input attribute name: recipient_status Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: input attribute value: 0 Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: private/verify socket: wanted attribute: reason Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: input attribute name: reason Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: input attribute value: 250 Ok Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: private/verify socket: wanted attribute: (list terminator) Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: input attribute name: (end) Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: generic_checks: name=reject_unverified_recipient status=0 Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: >>> END Recipient address RESTRICTIONS <<< Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: >>> CHECKING RECIPIENT MAPS <<< Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: ctable_locate: leave existing entry key dom...@pointyears.net Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: maps_find: recipient_canonical_maps: dom...@pointyears.net: not found Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: match_string: pointyears.net ~? pointyears.net Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: maps_find: recipient_canonical_maps: domain: not found Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: maps_find: recipient_canonical_maps: @pointyears.net: not found Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: mail_addr_find: dom...@pointyears.net -> (not found) Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: maps_find: canonical_maps: dom...@pointyears.net: not found Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: match_string: pointyears.net ~? pointyears.net Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: maps_find: canonical_maps: domain: not found Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: maps_find: canonical_maps: @pointyears.net: not found Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: mail_addr_find: dom...@pointyears.net -> (not found) Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: maps_find: virtual_alias_maps: dom...@pointyears.net: not found Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: match_string: pointyears.net ~? pointyears.net Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: maps_find: virtual_alias_maps: domain: not found Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: maps_find: virtual_alias_maps: @pointyears.net: not found Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: mail_addr_find: dom...@pointyears.net -> (not found) Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: connect to subsystem private/proxymap Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: send attr request = lookup Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: send attr table = unix:passwd.byname Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: send attr flags = 16448 Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: send attr key = dom...@pointyears.net Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: private/proxymap socket: wanted attribute: status Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: input attribute name: status Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: input attribute value: 1 Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: private/proxymap socket: wanted attribute: value Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: input attribute name: value Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: input attribute value: (end) Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: private/proxymap socket: wanted attribute: (list terminator) Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: input attribute name: (end) Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: dict_proxy_lookup: table=unix:passwd.byname flags=lock|fold_fix key=dom...@pointyears.net -> status=1 result= Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: maps_find: local_recipient_maps: dom...@pointyears.net: not found Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: match_string: pointyears.net ~? pointyears.net Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: send attr request = lookup Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: send attr table = unix:passwd.byname Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: send attr flags = 16448 Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: send attr key = domain Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: private/proxymap socket: wanted attribute: status Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: input attribute name: status Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: input attribute value: 1 Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: private/proxymap socket: wanted attribute: value Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: input attribute name: value Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: input attribute value: (end) Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: private/proxymap socket: wanted attribute: (list terminator) Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: input attribute name: (end) Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: dict_proxy_lookup: table=unix:passwd.byname flags=lock|fold_fix key=domain -> status=1 result= Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: maps_find: local_recipient_maps: domain: not found Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: send attr request = lookup Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: send attr table = unix:passwd.byname Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: send attr flags = 16448 Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: send attr key = @pointyears.net Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: private/proxymap socket: wanted attribute: status Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: input attribute name: status Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: input attribute value: 1 Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: private/proxymap socket: wanted attribute: value Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: input attribute name: value Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: input attribute value: (end) Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: private/proxymap socket: wanted attribute: (list terminator) Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: input attribute name: (end) Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: dict_proxy_lookup: table=unix:passwd.byname flags=lock|fold_fix key=@pointyears.net -> status=1 result= Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: maps_find: local_recipient_maps: @pointyears.net: not found Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: mail_addr_find: dom...@pointyears.net -> (not found) Mar 15 17:50:36 miniserv.private postfix/smtpd[36549]: NOQUEUE: reject: RCPT from mxout-044-pao.mailhop.org[216.146.32.44]: 450 4.1.1 <dom...@pointyears.net>: Recipient address rejected: User unknown in local recipient table; from=<rze...@gmail.com> to=<dom...@pointyears.net> proto=ESMTP helo=<mail-11-pao.dyndns.com> Postconf -n: biff = no command_directory = /usr/sbin config_directory = /Library/Server/Mail/Config/postfix content_filter = smtp-amavis:[127.0.0.1]:10024 daemon_directory = /usr/libexec/postfix data_directory = /Library/Server/Mail/Data/mta debug_peer_level = 1 debug_peer_list = mailhop.org debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin xxgdb $daemon_directory/$process_name $process_id & sleep 5 dovecot_destination_recipient_limit = 1 enable_server_options = yes header_checks = html_directory = /usr/share/doc/postfix/html imap_submit_cred_file = /Library/Server/Mail/Config/postfix/submit.cred inet_interfaces = all inet_protocols = all local_transport = error:local mail delivery is disabled mail_owner = _postfix mailbox_size_limit = 0 mailq_path = /usr/bin/mailq manpage_directory = /usr/share/man message_size_limit = 20485760 mydestination = $mydomain mydomain = pointyears.net mydomain_fallback = localhost myhostname = miniserv.pointyears.net mynetworks = 127.0.0.0/8, [::1]/128 , 192.168.1.0/24 newaliases_path = /usr/bin/newaliases queue_directory = /Library/Server/Mail/Data/spool readme_directory = /usr/share/doc/postfix recipient_canonical_maps = hash:/Library/Server/Mail/Config/postfix/system_user_maps recipient_delimiter = - relayhost = smtp.comcast.net:587 sample_directory = /usr/share/doc/postfix/examples sendmail_path = /usr/sbin/sendmail setgid_group = _postdrop smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/Library/Server/Mail/Config/postfix/sasl/passwd smtp_sasl_security_options = smtp_use_tls = yes smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) smtpd_client_restrictions = permit_mynetworks permit_sasl_authenticated permit smtpd_enforce_tls = no smtpd_helo_required = no smtpd_helo_restrictions = smtpd_pw_server_security_options = cram-md5,digest-md5,login,plain smtpd_recipient_restrictions = permit_sasl_authenticated permit_mynetworks reject_unauth_destination reject_unknown_recipient_domain reject_unverified_recipient smtpd_sasl_auth_enable = yes smtpd_tls_CAfile = /etc/certificates/miniserv.private.4B51A5FA6E5667ACF67485DA6BA7BB562F685C80.chain.pem smtpd_tls_cert_file = /etc/certificates/miniserv.private.4B51A5FA6E5667ACF67485DA6BA7BB562F685C80.cert.pem smtpd_tls_ciphers = medium smtpd_tls_exclude_ciphers = SSLv2, aNULL, ADH, eNULL smtpd_tls_key_file = /etc/certificates/miniserv.private.4B51A5FA6E5667ACF67485DA6BA7BB562F685C80.key.pem smtpd_tls_loglevel = 1 smtpd_tls_security_level = may smtpd_use_pw_server = yes smtpd_use_tls = yes tls_random_source = dev:/dev/urandom transport_maps = hash:/Library/Server/Mail/Config/postfix/transport unknown_local_recipient_reject_code = 450 use_sacl_cache = yes virtual_alias_domains = $virtual_alias_maps virtual_alias_maps = $virtual_maps transport: # TRANSPORT(5) pointyears.net smtp:[192.168.1.5]:587