AFP548 Changing the world one server at a time.

Mail and My Decent Into Hell

Home › Forums › OS X Server and Client Discussion › Mail › Mail and My Decent Into Hell

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #368387
    k12techman
    Participant

    I’m a first time poster to AFP548, but a long time reader…..

    I’ve recently set up my own mail server of 10.4.8 with the latest updates and such. DNS is working forwards and backwards, public and private. However, whenever I attempt to send email to my domain from a different domain, I get the following error returned:

    Hi. This is the qmail-send program at yahoo.com.
    I’m afraid I wasn’t able to deliver your message to the following addresses.
    This is a permanent error; I’ve given up. Sorry it didn’t work out.

    :
    65.71.169.5 does not like recipient.
    Remote host said: 554 : Relay access denied
    Giving up on 65.71.169.5.

    I’m not brand new to OS X Server, and I’ve set email servers up previously. But, this has the best of me and I’m considering a sacrifice to the Sun god if no one here can help.

    Here are the results of a postfix -v -v

    postfix: dict_register: mail_dict 1
    postfix: dict_update: config_directory = /etc/postfix
    postfix: dict_update: queue_directory = /private/var/spool/postfix
    postfix: dict_update: command_directory = /usr/sbin
    postfix: dict_update: daemon_directory = /usr/libexec/postfix
    postfix: dict_update: mail_owner = postfix
    postfix: dict_update: unknown_local_recipient_reject_code = 550
    postfix: dict_update: debug_peer_level = 2
    postfix: dict_update: debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin? xxgdb $daemon_directory/$process_name $process_id & sleep 5
    postfix: dict_update: sendmail_path = /usr/sbin/sendmail
    postfix: dict_update: newaliases_path = /usr/bin/newaliases
    postfix: dict_update: mailq_path = /usr/bin/mailq
    postfix: dict_update: setgid_group = postdrop
    postfix: dict_update: html_directory = no
    postfix: dict_update: manpage_directory = /usr/share/man
    postfix: dict_update: sample_directory = /usr/share/doc/postfix/examples
    postfix: dict_update: readme_directory = /usr/share/doc/postfix
    postfix: dict_update: inet_interfaces = all
    postfix: dict_update: mynetworks_style = host
    postfix: dict_update: mydomain_fallback = localhost
    postfix: dict_update: mailbox_size_limit = 0
    postfix: dict_update: smtpd_tls_key_file =
    postfix: dict_update: myhostname = mail.techvernacular.com
    postfix: dict_update: mailbox_transport = cyrus
    postfix: dict_update: mydomain = techvernacular.com
    postfix: dict_update: enable_server_options = yes
    postfix: dict_update: smtp_principal = smtp/www.techvernacular.com@NS1.TECHVERNACULAR.COM
    postfix: dict_update: virus_db_last_update = 2005-03-20 18:28:14 -0600
    postfix: dict_update: mynetworks = 127.0.0.1/32,10.10.1.3/32
    postfix: dict_update: smtpd_sasl_auth_enable = yes
    postfix: dict_update: smtpd_use_pw_server = yes
    postfix: dict_update: smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination,permit
    postfix: dict_update: smtpd_pw_server_security_options = login
    postfix: dict_update: mydestination = $myhostname,localhost.$mydomain,techvernacular.com
    postfix: dict_update: virtual_transport = virtual
    postfix: dict_update: virtual_mailbox_domains =
    postfix: dict_lookup: syslog_facility = (notfound)
    postfix: dict_eval[1] mail
    postfix: mac_parse: mail
    postfix: dict_eval_action: type literal buf mail context mail_dict “” recursive
    postfix: dict_eval[1] result mail
    postfix: dict_update: syslog_facility = mail
    postfix: dict_lookup: myhostname = mail.techvernacular.com
    postfix: dict_eval[1] mail.techvernacular.com
    postfix: mac_parse: mail.techvernacular.com
    postfix: dict_eval_action: type literal buf mail.techvernacular.com context mail_dict “mail” recursive
    postfix: dict_eval[1] result mail.techvernacular.com
    postfix: dict_lookup: mydomain = techvernacular.com
    postfix: dict_eval[1] techvernacular.com
    postfix: mac_parse: techvernacular.com
    postfix: dict_eval_action: type literal buf techvernacular.com context mail_dict “mail.techvernacular.com” recursive
    postfix: dict_eval[1] result techvernacular.com
    postfix: dict_lookup: mydomain_fallback = localhost
    postfix: dict_eval[1] localhost
    postfix: mac_parse: localhost
    postfix: dict_eval_action: type literal buf localhost context mail_dict “techvernacular.com” recursive
    postfix: dict_eval[1] result localhost
    postfix: dict_lookup: mail_name = (notfound)
    postfix: dict_eval[1] Postfix
    postfix: mac_parse: Postfix
    postfix: dict_eval_action: type literal buf Postfix context mail_dict “localhost” recursive
    postfix: dict_eval[1] result Postfix
    postfix: dict_update: mail_name = Postfix
    postfix: dict_lookup: syslog_name = (notfound)
    postfix: dict_eval[1] postfix
    postfix: mac_parse: postfix
    postfix: dict_eval_action: type literal buf postfix context mail_dict “Postfix” recursive
    postfix: dict_eval[1] result postfix
    postfix: dict_update: syslog_name = postfix
    postfix: dict_lookup: mail_owner = postfix
    postfix: dict_eval[1] postfix
    postfix: mac_parse: postfix
    postfix: dict_eval_action: type literal buf postfix context mail_dict “postfix” recursive
    postfix: dict_eval[1] result postfix
    postfix: dict_lookup: setgid_group = postdrop
    postfix: dict_eval[1] postdrop
    postfix: mac_parse: postdrop
    postfix: dict_eval_action: type literal buf postdrop context mail_dict “postfix” recursive
    postfix: dict_eval[1] result postdrop
    postfix: dict_lookup: mydestination = $myhostname,localhost.$mydomain,techvernacular.com
    postfix: dict_eval[1] $myhostname,localhost.$mydomain,techvernacular.com
    postfix: mac_parse: $myhostname,localhost.$mydomain,techvernacular.com
    postfix: dict_eval_action: type variable buf myhostname context mail_dict “postdrop” recursive
    postfix: dict_lookup: myhostname = mail.techvernacular.com
    postfix: dict_eval[2] mail.techvernacular.com
    postfix: mac_parse: mail.techvernacular.com
    postfix: dict_eval_action: type literal buf mail.techvernacular.com context mail_dict “postdrop” recursive
    postfix: dict_eval[2] result mail.techvernacular.com
    postfix: dict_eval_action: type literal buf ,localhost. context mail_dict “mail.techvernacular.com” recursive
    postfix: dict_eval_action: type variable buf mydomain context mail_dict “mail.techvernacular.com,localhost.” recursive
    postfix: dict_lookup: mydomain = techvernacular.com
    postfix: dict_eval[2] techvernacular.com
    postfix: mac_parse: techvernacular.com
    postfix: dict_eval_action: type literal buf techvernacular.com context mail_dict “mail.techvernacular.com,localhost.” recursive
    postfix: dict_eval[2] result mail.techvernacular.com,localhost.techvernacular.com
    postfix: dict_eval_action: type literal buf ,techvernacular.com context mail_dict “mail.techvernacular.com,localhost.techvernacular.com” recursive
    postfix: dict_eval[1] result mail.techvernacular.com,localhost.techvernacular.com,techvernacular.com
    postfix: dict_lookup: myorigin = (notfound)
    postfix: dict_eval[1] $myhostname
    postfix: mac_parse: $myhostname
    postfix: dict_eval_action: type variable buf myhostname context mail_dict “mail.techvernacular.com,localhost.techvernacular.com,techvernacular.com” recursive
    postfix: dict_lookup: myhostname = mail.techvernacular.com
    postfix: dict_eval[2] mail.techvernacular.com
    postfix: mac_parse: mail.techvernacular.com
    postfix: dict_eval_action: type literal buf mail.techvernacular.com context mail_dict “mail.techvernacular.com,localhost.techvernacular.com,techvernacular.com” recursive
    postfix: dict_eval[2] result mail.techvernacular.com
    postfix: dict_eval[1] result mail.techvernacular.com
    postfix: dict_update: myorigin = mail.techvernacular.com
    postfix: dict_lookup: relayhost = (notfound)
    postfix: dict_eval[1]
    postfix: mac_parse:
    postfix: dict_eval[1] result mail.techvernacular.com
    postfix: dict_update: relayhost =
    postfix: dict_lookup: daemon_directory = /usr/libexec/postfix
    postfix: dict_eval[1] /usr/libexec/postfix
    postfix: mac_parse: /usr/libexec/postfix
    postfix: dict_eval_action: type literal buf /usr/libexec/postfix context mail_dict “” recursive
    postfix: dict_eval[1] result /usr/libexec/postfix
    postfix: dict_lookup: command_directory = /usr/sbin
    postfix: dict_eval[1] /usr/sbin
    postfix: mac_parse: /usr/sbin
    postfix: dict_eval_action: type literal buf /usr/sbin context mail_dict “/usr/libexec/postfix” recursive
    postfix: dict_eval[1] result /usr/sbin
    postfix: dict_lookup: queue_directory = /private/var/spool/postfix
    postfix: dict_eval[1] /private/var/spool/postfix
    postfix: mac_parse: /private/var/spool/postfix
    postfix: dict_eval_action: type literal buf /private/var/spool/postfix context mail_dict “/usr/sbin” recursive
    postfix: dict_eval[1] result /private/var/spool/postfix
    postfix: dict_lookup: process_id_directory = (notfound)
    postfix: dict_eval[1] pid
    postfix: mac_parse: pid
    postfix: dict_eval_action: type literal buf pid context mail_dict “/private/var/spool/postfix” recursive
    postfix: dict_eval[1] result pid
    postfix: dict_update: process_id_directory = pid
    postfix: dict_lookup: inet_interfaces = all
    postfix: dict_eval[1] all
    postfix: mac_parse: all
    postfix: dict_eval_action: type literal buf all context mail_dict “pid” recursive
    postfix: dict_eval[1] result all
    postfix: dict_lookup: proxy_interfaces = (notfound)
    postfix: dict_eval[1]
    postfix: mac_parse:
    postfix: dict_eval[1] result all
    postfix: dict_update: proxy_interfaces =
    postfix: dict_lookup: double_bounce_sender = (notfound)
    postfix: dict_eval[1] double-bounce
    postfix: mac_parse: double-bounce
    postfix: dict_eval_action: type literal buf double-bounce context mail_dict “” recursive
    postfix: dict_eval[1] result double-bounce
    postfix: dict_update: double_bounce_sender = double-bounce
    postfix: dict_lookup: default_privs = (notfound)
    postfix: dict_eval[1] nobody
    postfix: mac_parse: nobody
    postfix: dict_eval_action: type literal buf nobody context mail_dict “double-bounce” recursive
    postfix: dict_eval[1] result nobody
    postfix: dict_update: default_privs = nobody
    postfix: dict_lookup: alias_database = (notfound)
    postfix: dict_eval[1] hash:/etc/aliases
    postfix: mac_parse: hash:/etc/aliases
    postfix: dict_eval_action: type literal buf hash:/etc/aliases context mail_dict “nobody” recursive
    postfix: dict_eval[1] result hash:/etc/aliases
    postfix: dict_update: alias_database = hash:/etc/aliases
    postfix: dict_lookup: mail_release_date = (notfound)
    postfix: dict_eval[1] 20040915
    postfix: mac_parse: 20040915
    postfix: dict_eval_action: type literal buf 20040915 context mail_dict “hash:/etc/aliases” recursive
    postfix: dict_eval[1] result 20040915
    postfix: dict_update: mail_release_date = 20040915
    postfix: dict_lookup: mail_version = (notfound)
    postfix: dict_eval[1] 2.1.5
    postfix: mac_parse: 2.1.5
    postfix: dict_eval_action: type literal buf 2.1.5 context mail_dict “20040915” recursive
    postfix: dict_eval[1] result 2.1.5
    postfix: dict_update: mail_version = 2.1.5
    postfix: dict_lookup: default_database_type = (notfound)
    postfix: dict_eval[1] hash
    postfix: mac_parse: hash
    postfix: dict_eval_action: type literal buf hash context mail_dict “2.1.5” recursive
    postfix: dict_eval[1] result hash
    postfix: dict_update: default_database_type = hash
    postfix: dict_lookup: hash_queue_names = (notfound)
    postfix: dict_eval[1] incoming, active, deferred, bounce, defer, flush, hold, trace
    postfix: mac_parse: incoming, active, deferred, bounce, defer, flush, hold, trace
    postfix: dict_eval_action: type literal buf incoming, active, deferred, bounce, defer, flush, hold, trace context mail_dict “hash” recursive
    postfix: dict_eval[1] result incoming, active, deferred, bounce, defer, flush, hold, trace
    postfix: dict_update: hash_queue_names = incoming, active, deferred, bounce, defer, flush, hold, trace
    postfix: dict_lookup: recipient_delimiter = (notfound)
    postfix: dict_eval[1]
    postfix: mac_parse:
    postfix: dict_eval[1] result incoming, active, deferred, bounce, defer, flush, hold, trace
    postfix: dict_update: recipient_delimiter =
    postfix: dict_lookup: relay_domains = (notfound)
    postfix: dict_eval[1] $mydestination
    postfix: mac_parse: $mydestination
    postfix: dict_eval_action: type variable buf mydestination context mail_dict “” recursive
    postfix: dict_lookup: mydestination = $myhostname,localhost.$mydomain,techvernacular.com
    postfix: dict_eval[2] $myhostname,localhost.$mydomain,techvernacular.com
    postfix: mac_parse: $myhostname,localhost.$mydomain,techvernacular.com
    postfix: dict_eval_action: type variable buf myhostname context mail_dict “” recursive
    postfix: dict_lookup: myhostname = mail.techvernacular.com
    postfix: dict_eval[3] mail.techvernacular.com
    postfix: mac_parse: mail.techvernacular.com
    postfix: dict_eval_action: type literal buf mail.techvernacular.com context mail_dict “” recursive
    postfix: dict_eval[3] result mail.techvernacular.com
    postfix: dict_eval_action: type literal buf ,localhost. context mail_dict “mail.techvernacular.com” recursive
    postfix: dict_eval_action: type variable buf mydomain context mail_dict “mail.techvernacular.com,localhost.” recursive
    postfix: dict_lookup: mydomain = techvernacular.com
    postfix: dict_eval[3] techvernacular.com
    postfix: mac_parse: techvernacular.com
    postfix: dict_eval_action: type literal buf techvernacular.com context mail_dict “mail.techvernacular.com,localhost.” recursive
    postfix: dict_eval[3] result mail.techvernacular.com,localhost.techvernacular.com
    postfix: dict_eval_action: type literal buf ,techvernacular.com context mail_dict “mail.techvernacular.com,localhost.techvernacular.com” recursive
    postfix: dict_eval[2] result mail.techvernacular.com,localhost.techvernacular.com,techvernacular.com
    postfix: dict_eval[1] result mail.techvernacular.com,localhost.techvernacular.com,techvernacular.com
    postfix: dict_update: relay_domains = mail.techvernacular.com,localhost.techvernacular.com,techvernacular.com
    postfix: dict_lookup: fast_flush_domains = (notfound)
    postfix: dict_eval[1] $relay_domains
    postfix: mac_parse: $relay_domains
    postfix: dict_eval_action: type variable buf relay_domains context mail_dict “mail.techvernacular.com,localhost.techvernacular.com,techvernacular.com” recursive
    postfix: dict_lookup: relay_domains = mail.techvernacular.com,localhost.techvernacular.com,techvernacular.com
    postfix: dict_eval[2] mail.techvernacular.com,localhost.techvernacular.com,techvernacular.com
    postfix: mac_parse: mail.techvernacular.com,localhost.techvernacular.com,techvernacular.com
    postfix: dict_eval_action: type literal buf mail.techvernacular.com,localhost.techvernacular.com,techvernacular.com context mail_dict “mail.techvernacular.com,localhost.techvernacular.com,techvernacular.com” recursive
    postfix: dict_eval[2] result mail.techvernacular.com,localhost.techvernacular.com,techvernacular.com
    postfix: dict_eval[1] result mail.techvernacular.com,localhost.techvernacular.com,techvernacular.com
    postfix: dict_update: fast_flush_domains = mail.techvernacular.com,localhost.techvernacular.com,techvernacular.com
    postfix: dict_lookup: export_environment = (notfound)
    postfix: dict_eval[1] TZ MAIL_CONFIG
    postfix: mac_parse: TZ MAIL_CONFIG
    postfix: dict_eval_action: type literal buf TZ MAIL_CONFIG context mail_dict “mail.techvernacular.com,localhost.techvernacular.com,techvernacular.com” recursive
    postfix: dict_eval[1] result TZ MAIL_CONFIG
    postfix: dict_update: export_environment = TZ MAIL_CONFIG
    postfix: dict_lookup: import_environment = (notfound)
    postfix: dict_eval[1] MAIL_CONFIG MAIL_DEBUG MAIL_LOGTAG TZ XAUTHORITY DISPLAY
    postfix: mac_parse: MAIL_CONFIG MAIL_DEBUG MAIL_LOGTAG TZ XAUTHORITY DISPLAY
    postfix: dict_eval_action: type literal buf MAIL_CONFIG MAIL_DEBUG MAIL_LOGTAG TZ XAUTHORITY DISPLAY context mail_dict “TZ MAIL_CONFIG” recursive
    postfix: dict_eval[1] result MAIL_CONFIG MAIL_DEBUG MAIL_LOGTAG TZ XAUTHORITY DISPLAY
    postfix: dict_update: import_environment = MAIL_CONFIG MAIL_DEBUG MAIL_LOGTAG TZ XAUTHORITY DISPLAY
    postfix: dict_lookup: mynetworks_style = host
    postfix: dict_eval[1] host
    postfix: mac_parse: host
    postfix: dict_eval_action: type literal buf host context mail_dict “MAIL_CONFIG MAIL_DEBUG MAIL_LOGTAG TZ XAUTHORITY DISPLAY” recursive
    postfix: dict_eval[1] result host
    postfix: dict_lookup: debug_peer_list = (notfound)
    postfix: dict_eval[1]
    postfix: mac_parse:
    postfix: dict_eval[1] result host
    postfix: dict_update: debug_peer_list =
    postfix: dict_lookup: default_verp_delimiters = (notfound)
    postfix: dict_eval[1] +=
    postfix: mac_parse: +=
    postfix: dict_eval_action: type literal buf += context mail_dict “” recursive
    postfix: dict_eval[1] result +=
    postfix: dict_update: default_verp_delimiters = +=
    postfix: dict_lookup: verp_delimiter_filter = (notfound)
    postfix: dict_eval[1] -=+
    postfix: mac_parse: -=+
    postfix: dict_eval_action: type literal buf -=+ context mail_dict “+=” recursive
    postfix: dict_eval[1] result -=+
    postfix: dict_update: verp_delimiter_filter = -=+
    postfix: dict_lookup: parent_domain_matches_subdomains = (notfound)
    postfix: dict_eval[1] debug_peer_list,fast_flush_domains,mynetworks,permit_mx_backup_networks,qmqpd_authorized_clients,relay_domains,smtpd_access_maps
    postfix: mac_parse: debug_peer_list,fast_flush_domains,mynetworks,permit_mx_backup_networks,qmqpd_authorized_clients,relay_domains,smtpd_access_maps
    postfix: dict_eval_action: type literal buf debug_peer_list,fast_flush_domains,mynetworks,permit_mx_backup_networks,qmqpd_authorized_clients,relay_domains,smtpd_access_maps context mail_dict “-=+” recursive
    postfix: dict_eval[1] result debug_peer_list,fast_flush_domains,mynetworks,permit_mx_backup_networks,qmqpd_authorized_clients,relay_domains,smtpd_access_maps
    postfix: dict_update: parent_domain_matches_subdomains = debug_peer_list,fast_flush_domains,mynetworks,permit_mx_backup_networks,qmqpd_authorized_clients,relay_domains,smtpd_access_maps
    postfix: dict_lookup: alternate_config_directories = (notfound)
    postfix: dict_eval[1]
    postfix: mac_parse:
    postfix: dict_eval[1] result debug_peer_list,fast_flush_domains,mynetworks,permit_mx_backup_networks,qmqpd_authorized_clients,relay_domains,smtpd_access_maps
    postfix: dict_update: alternate_config_directories =
    postfix: dict_lookup: bounce_service_name = (notfound)
    postfix: dict_eval[1] bounce
    postfix: mac_parse: bounce
    postfix: dict_eval_action: type literal buf bounce context mail_dict “” recursive
    postfix: dict_eval[1] result bounce
    postfix: dict_update: bounce_service_name = bounce
    postfix: dict_lookup: cleanup_service_name = (notfound)
    postfix: dict_eval[1] cleanup
    postfix: mac_parse: cleanup
    postfix: dict_eval_action: type literal buf cleanup context mail_dict “bounce” recursive
    postfix: dict_eval[1] result cleanup
    postfix: dict_update: cleanup_service_name = cleanup
    postfix: dict_lookup: defer_service_name = (notfound)
    postfix: dict_eval[1] defer
    postfix: mac_parse: defer
    postfix: dict_eval_action: type literal buf defer context mail_dict “cleanup” recursive
    postfix: dict_eval[1] result defer
    postfix: dict_update: defer_service_name = defer
    postfix: dict_lookup: pickup_service_name = (notfound)
    postfix: dict_eval[1] pickup
    postfix: mac_parse: pickup
    postfix: dict_eval_action: type literal buf pickup context mail_dict “defer” recursive
    postfix: dict_eval[1] result pickup
    postfix: dict_update: pickup_service_name = pickup
    postfix: dict_lookup: queue_service_name = (notfound)
    postfix: dict_eval[1] qmgr
    postfix: mac_parse: qmgr
    postfix: dict_eval_action: type literal buf qmgr context mail_dict “pickup” recursive
    postfix: dict_eval[1] result qmgr
    postfix: dict_update: queue_service_name = qmgr
    postfix: dict_lookup: rewrite_service_name = (notfound)
    postfix: dict_eval[1] rewrite
    postfix: mac_parse: rewrite
    postfix: dict_eval_action: type literal buf rewrite context mail_dict “qmgr” recursive
    postfix: dict_eval[1] result rewrite
    postfix: dict_update: rewrite_service_name = rewrite
    postfix: dict_lookup: showq_service_name = (notfound)
    postfix: dict_eval[1] showq
    postfix: mac_parse: showq
    postfix: dict_eval_action: type literal buf showq context mail_dict “rewrite” recursive
    postfix: dict_eval[1] result showq
    postfix: dict_update: showq_service_name = showq
    postfix: dict_lookup: error_service_name = (notfound)
    postfix: dict_eval[1] error
    postfix: mac_parse: error
    postfix: dict_eval_action: type literal buf error context mail_dict “showq” recursive
    postfix: dict_eval[1] result error
    postfix: dict_update: error_service_name = error
    postfix: dict_lookup: flush_service_name = (notfound)
    postfix: dict_eval[1] flush
    postfix: mac_parse: flush
    postfix: dict_eval_action: type literal buf flush context mail_dict “error” recursive
    postfix: dict_eval[1] result flush
    postfix: dict_update: flush_service_name = flush
    postfix: dict_lookup: address_verify_service_name = (notfound)
    postfix: dict_eval[1] verify
    postfix: mac_parse: verify
    postfix: dict_eval_action: type literal buf verify context mail_dict “flush” recursive
    postfix: dict_eval[1] result verify
    postfix: dict_update: address_verify_service_name = verify
    postfix: dict_lookup: trace_service_name = (notfound)
    postfix: dict_eval[1] trace
    postfix: mac_parse: trace
    postfix: dict_eval_action: type literal buf trace context mail_dict “verify” recursive
    postfix: dict_eval[1] result trace
    postfix: dict_update: trace_service_name = trace
    postfix: dict_lookup: tls_random_exchange_name = (notfound)
    postfix: dict_eval[1] ${config_directory}/prng_exch
    postfix: mac_parse: ${config_directory}/prng_exch
    postfix: dict_eval_action: type variable buf config_directory context mail_dict “trace” recursive
    postfix: dict_lookup: config_directory = /etc/postfix
    postfix: dict_eval[2] /etc/postfix
    postfix: mac_parse: /etc/postfix
    postfix: dict_eval_action: type literal buf /etc/postfix context mail_dict “trace” recursive
    postfix: dict_eval[2] result /etc/postfix
    postfix: dict_eval_action: type literal buf /prng_exch context mail_dict “/etc/postfix” recursive
    postfix: dict_eval[1] result /etc/postfix/prng_exch
    postfix: dict_update: tls_random_exchange_name = /etc/postfix/prng_exch
    postfix: dict_lookup: smtpd_tls_cert_file = (notfound)
    postfix: dict_eval[1]
    postfix: mac_parse:
    postfix: dict_eval[1] result /etc/postfix/prng_exch
    postfix: dict_update: smtpd_tls_cert_file =
    postfix: dict_lookup: smtpd_tls_key_file =
    postfix: dict_eval[1]
    postfix: mac_parse:
    postfix: dict_eval[1] result
    postfix: dict_lookup: smtpd_tls_dcert_file = (notfound)
    postfix: dict_eval[1]
    postfix: mac_parse:
    postfix: dict_eval[1] result
    postfix: dict_update: smtpd_tls_dcert_file =
    postfix: dict_lookup: smtpd_tls_dkey_file = (notfound)
    postfix: dict_eval[1] $smtpd_tls_dcert_file
    postfix: mac_parse: $smtpd_tls_dcert_file
    postfix: dict_eval_action: type variable buf smtpd_tls_dcert_file context mail_dict “” recursive
    postfix: dict_lookup: smtpd_tls_dcert_file =
    postfix: dict_eval[2]
    postfix: mac_parse:
    postfix: dict_eval[2] result
    postfix: dict_eval[1] result
    postfix: dict_update: smtpd_tls_dkey_file =
    postfix: dict_lookup: smtpd_tls_CAfile = (notfound)
    postfix: dict_eval[1]
    postfix: mac_parse:
    postfix: dict_eval[1] result
    postfix: dict_update: smtpd_tls_CAfile =
    postfix: dict_lookup: smtpd_tls_CApath = (notfound)
    postfix: dict_eval[1]
    postfix: mac_parse:
    postfix: dict_eval[1] result
    postfix: dict_update: smtpd_tls_CApath =
    postfix: dict_lookup: smtpd_tls_cipherlist = (notfound)
    postfix: dict_eval[1]
    postfix: mac_parse:
    postfix: dict_eval[1] result
    postfix: dict_update: smtpd_tls_cipherlist =
    postfix: dict_lookup: smtpd_tls_dh512_param_file = (notfound)
    postfix: dict_eval[1]
    postfix: mac_parse:
    postfix: dict_eval[1] result
    postfix: dict_update: smtpd_tls_dh512_param_file =
    postfix: dict_lookup: smtpd_tls_dh1024_param_file = (notfound)
    postfix: dict_eval[1]
    postfix: mac_parse:
    postfix: dict_eval[1] result
    postfix: dict_update: smtpd_tls_dh1024_param_file =
    postfix: dict_lookup: smtpd_tls_session_cache_database = (notfound)
    postfix: dict_eval[1]
    postfix: mac_parse:
    postfix: dict_eval[1] result
    postfix: dict_update: smtpd_tls_session_cache_database =
    postfix: dict_lookup: smtp_tls_cert_file = (notfound)
    postfix: dict_eval[1]
    postfix: mac_parse:
    postfix: dict_eval[1] result
    postfix: dict_update: smtp_tls_cert_file =
    postfix: dict_lookup: smtp_tls_key_file = (notfound)
    postfix: dict_eval[1] $smtp_tls_cert_file
    postfix: mac_parse: $smtp_tls_cert_file
    postfix: dict_eval_action: type variable buf smtp_tls_cert_file context mail_dict “” recursive
    postfix: dict_lookup: smtp_tls_cert_file =
    postfix: dict_eval[2]
    postfix: mac_parse:
    postfix: dict_eval[2] result
    postfix: dict_eval[1] result
    postfix: dict_update: smtp_tls_key_file =
    postfix: dict_lookup: smtp_tls_dcert_file = (notfound)
    postfix: dict_eval[1]
    postfix: mac_parse:
    postfix: dict_eval[1] result
    postfix: dict_update: smtp_tls_dcert_file =
    postfix: dict_lookup: smtp_tls_dkey_file = (notfound)
    postfix: dict_eval[1] $smtp_tls_dcert_file
    postfix: mac_parse: $smtp_tls_dcert_file
    postfix: dict_eval_action: type variable buf smtp_tls_dcert_file context mail_dict “” recursive
    postfix: dict_lookup: smtp_tls_dcert_file =
    postfix: dict_eval[2]
    postfix: mac_parse:
    postfix: dict_eval[2] result
    postfix: dict_eval[1] result
    postfix: dict_update: smtp_tls_dkey_file =
    postfix: dict_lookup: smtp_tls_CAfile = (notfound)
    postfix: dict_eval[1]
    postfix: mac_parse:
    postfix: dict_eval[1] result
    postfix: dict_update: smtp_tls_CAfile =
    postfix: dict_lookup: smtp_tls_CApath = (notfound)
    postfix: dict_eval[1]
    postfix: mac_parse:
    postfix: dict_eval[1] result
    postfix: dict_update: smtp_tls_CApath =
    postfix: dict_lookup: smtp_tls_cipherlist = (notfound)
    postfix: dict_eval[1]
    postfix: mac_parse:
    postfix: dict_eval[1] result
    postfix: dict_update: smtp_tls_cipherlist =
    postfix: dict_lookup: smtp_tls_session_cache_database = (notfound)
    postfix: dict_eval[1]
    postfix: mac_parse:
    postfix: dict_eval[1] result
    postfix: dict_update: smtp_tls_session_cache_database =
    postfix: dict_lookup: tls_daemon_random_source = (notfound)
    postfix: dict_eval[1]
    postfix: mac_parse:
    postfix: dict_eval[1] result
    postfix: dict_update: tls_daemon_random_source =
    postfix: dict_lookup: max_use = (notfound)
    postfix: dict_update: max_use = 100
    postfix: dict_lookup: dont_remove = (notfound)
    postfix: dict_update: dont_remove = 0
    postfix: dict_lookup: line_length_limit = (notfound)
    postfix: dict_update: line_length_limit = 2048
    postfix: dict_lookup: message_size_limit = (notfound)
    postfix: dict_update: message_size_limit = 10240000
    postfix: dict_lookup: hash_queue_depth = (notfound)
    postfix: dict_update: hash_queue_depth = 1
    postfix: dict_lookup: fork_attempts = (notfound)
    postfix: dict_update: fork_attempts = 5
    postfix: dict_lookup: deliver_lock_attempts = (notfound)
    postfix: dict_update: deliver_lock_attempts = 20
    postfix: dict_lookup: debug_peer_level = 2
    postfix: dict_eval[1] 2
    postfix: mac_parse: 2
    postfix: dict_eval_action: type literal buf 2 context mail_dict “” recursive
    postfix: dict_eval[1] result 2
    postfix: dict_lookup: fault_injection_code = (notfound)
    postfix: dict_update: fault_injection_code = 0
    postfix: dict_lookup: berkeley_db_create_buffer_size = (notfound)
    postfix: dict_update: berkeley_db_create_buffer_size = 16777216
    postfix: dict_lookup: berkeley_db_read_buffer_size = (notfound)
    postfix: dict_update: berkeley_db_read_buffer_size = 131072
    postfix: dict_lookup: header_size_limit = (notfound)
    postfix: dict_update: header_size_limit = 102400
    postfix: dict_lookup: header_address_token_limit = (notfound)
    postfix: dict_update: header_address_token_limit = 10240
    postfix: dict_lookup: mime_nesting_limit = (notfound)
    postfix: dict_update: mime_nesting_limit = 100
    postfix: dict_lookup: mime_boundary_length_limit = (notfound)
    postfix: dict_update: mime_boundary_length_limit = 2048
    postfix: dict_lookup: smtpd_tls_loglevel = (notfound)
    postfix: dict_update: smtpd_tls_loglevel = 0
    postfix: dict_lookup: smtp_tls_loglevel = (notfound)
    postfix: dict_update: smtp_tls_loglevel = 0
    postfix: dict_lookup: tls_daemon_random_bytes = (notfound)
    postfix: dict_update: tls_daemon_random_bytes = 32
    postfix: dict_lookup: disable_dns_lookups = (notfound)
    postfix: dict_update: disable_dns_lookups = no
    postfix: dict_lookup: soft_bounce = (notfound)
    postfix: dict_update: soft_bounce = no
    postfix: dict_lookup: owner_request_special = (notfound)
    postfix: dict_update: owner_request_special = yes
    postfix: dict_lookup: strict_8bitmime = (notfound)
    postfix: dict_update: strict_8bitmime = no
    postfix: dict_lookup: strict_7bit_headers = (notfound)
    postfix: dict_update: strict_7bit_headers = no
    postfix: dict_lookup: strict_8bitmime_body = (notfound)
    postfix: dict_update: strict_8bitmime_body = no
    postfix: dict_lookup: strict_mime_encoding_domain = (notfound)
    postfix: dict_update: strict_mime_encoding_domain = no
    postfix: dict_lookup: disable_mime_input_processing = (notfound)
    postfix: dict_update: disable_mime_input_processing = no
    postfix: dict_lookup: disable_mime_output_conversion = (notfound)
    postfix: dict_update: disable_mime_output_conversion = no
    postfix: dict_lookup: address_verify_negative_cache = (notfound)
    postfix: dict_update: address_verify_negative_cache = yes
    postfix: dict_lookup: backwards_bounce_logfile_compatibility = (notfound)
    postfix: dict_update: backwards_bounce_logfile_compatibility = yes
    postfix: dict_lookup: helpful_warnings = (notfound)
    postfix: dict_update: helpful_warnings = yes
    postfix: dict_lookup: enable_server_options = yes
    postfix: dict_eval[1] yes
    postfix: mac_parse: yes
    postfix: dict_eval_action: type literal buf yes context mail_dict “2” recursive
    postfix: dict_eval[1] result yes
    postfix: dict_eval[1] 100s
    postfix: mac_parse: 100s
    postfix: dict_eval_action: type literal buf 100s context mail_dict “yes” recursive
    postfix: dict_eval[1] result 100s
    postfix: dict_lookup: application_event_drain_time = (notfound)
    postfix: dict_update: application_event_drain_time = 100s
    postfix: dict_lookup: application_event_drain_time = 100s
    postfix: dict_eval[1] 100s
    postfix: mac_parse: 100s
    postfix: dict_eval_action: type literal buf 100s context mail_dict “100s” recursive
    postfix: dict_eval[1] result 100s
    postfix: dict_eval[1] 100s
    postfix: mac_parse: 100s
    postfix: dict_eval_action: type literal buf 100s context mail_dict “100s” recursive
    postfix: dict_eval[1] result 100s
    postfix: dict_lookup: max_idle = (notfound)
    postfix: dict_update: max_idle = 100s
    postfix: dict_lookup: max_idle = 100s
    postfix: dict_eval[1] 100s
    postfix: mac_parse: 100s
    postfix: dict_eval_action: type literal buf 100s context mail_dict “100s” recursive
    postfix: dict_eval[1] result 100s
    postfix: dict_eval[1] 3600s
    postfix: mac_parse: 3600s
    postfix: dict_eval_action: type literal buf 3600s context mail_dict “100s” recursive
    postfix: dict_eval[1] result 3600s
    postfix: dict_lookup: ipc_timeout = (notfound)
    postfix: dict_update: ipc_timeout = 3600s
    postfix: dict_lookup: ipc_timeout = 3600s
    postfix: dict_eval[1] 3600s
    postfix: mac_parse: 3600s
    postfix: dict_eval_action: type literal buf 3600s context mail_dict “3600s” recursive
    postfix: dict_eval[1] result 3600s
    postfix: dict_eval[1] 100s
    postfix: mac_parse: 100s
    postfix: dict_eval_action: type literal buf 100s context mail_dict “3600s” recursive
    postfix: dict_eval[1] result 100s
    postfix: dict_lookup: ipc_idle = (notfound)
    postfix: dict_update: ipc_idle = 100s
    postfix: dict_lookup: ipc_idle = 100s
    postfix: dict_eval[1] 100s
    postfix: mac_parse: 100s
    postfix: dict_eval_action: type literal buf 100s context mail_dict “100s” recursive
    postfix: dict_eval[1] result 100s
    postfix: dict_eval[1] 1000s
    postfix: mac_parse: 1000s
    postfix: dict_eval_action: type literal buf 1000s context mail_dict “100s” recursive
    postfix: dict_eval[1] result 1000s
    postfix: dict_lookup: ipc_ttl = (notfound)
    postfix: dict_update: ipc_ttl = 1000s
    postfix: dict_lookup: ipc_ttl = 1000s
    postfix: dict_eval[1] 1000s
    postfix: mac_parse: 1000s
    postfix: dict_eval_action: type literal buf 1000s context mail_dict “1000s” recursive
    postfix: dict_eval[1] result 1000s
    postfix: dict_eval[1] 10s
    postfix: mac_parse: 10s
    postfix: dict_eval_action: type literal buf 10s context mail_dict “1000s” recursive
    postfix: dict_eval[1] result 10s
    postfix: dict_lookup: trigger_timeout = (notfound)
    postfix: dict_update: trigger_timeout = 10s
    postfix: dict_lookup: trigger_timeout = 10s
    postfix: dict_eval[1] 10s
    postfix: mac_parse: 10s
    postfix: dict_eval_action: type literal buf 10s context mail_dict “10s” recursive
    postfix: dict_eval[1] result 10s
    postfix: dict_eval[1] 1s
    postfix: mac_parse: 1s
    postfix: dict_eval_action: type literal buf 1s context mail_dict “10s” recursive
    postfix: dict_eval[1] result 1s
    postfix: dict_lookup: fork_delay = (notfound)
    postfix: dict_update: fork_delay = 1s
    postfix: dict_lookup: fork_delay = 1s
    postfix: dict_eval[1] 1s
    postfix: mac_parse: 1s
    postfix: dict_eval_action: type literal buf 1s context mail_dict “1s” recursive
    postfix: dict_eval[1] result 1s
    postfix: dict_eval[1] 1s
    postfix: mac_parse: 1s
    postfix: dict_eval_action: type literal buf 1s context mail_dict “1s” recursive
    postfix: dict_eval[1] result 1s
    postfix: dict_lookup: deliver_lock_delay = (notfound)
    postfix: dict_update: deliver_lock_delay = 1s
    postfix: dict_lookup: deliver_lock_delay = 1s
    postfix: dict_eval[1] 1s
    postfix: mac_parse: 1s
    postfix: dict_eval_action: type literal buf 1s context mail_dict “1s” recursive
    postfix: dict_eval[1] result 1s
    postfix: dict_eval[1] 500s
    postfix: mac_parse: 500s
    postfix: dict_eval_action: type literal buf 500s context mail_dict “1s” recursive
    postfix: dict_eval[1] result 500s
    postfix: dict_lookup: stale_lock_time = (notfound)
    postfix: dict_update: stale_lock_time = 500s
    postfix: dict_lookup: stale_lock_time = 500s
    postfix: dict_eval[1] 500s
    postfix: mac_parse: 500s
    postfix: dict_eval_action: type literal buf 500s context mail_dict “500s” recursive
    postfix: dict_eval[1] result 500s
    postfix: dict_eval[1] 3600s
    postfix: mac_parse: 3600s
    postfix: dict_eval_action: type literal buf 3600s context mail_dict “500s” recursive
    postfix: dict_eval[1] result 3600s
    postfix: dict_lookup: smtpd_tls_session_cache_timeout = (notfound)
    postfix: dict_update: smtpd_tls_session_cache_timeout = 3600s
    postfix: dict_lookup: smtpd_tls_session_cache_timeout = 3600s
    postfix: dict_eval[1] 3600s
    postfix: mac_parse: 3600s
    postfix: dict_eval_action: type literal buf 3600s context mail_dict “3600s” recursive
    postfix: dict_eval[1] result 3600s
    postfix: dict_eval[1] 3600s
    postfix: mac_parse: 3600s
    postfix: dict_eval_action: type literal buf 3600s context mail_dict “3600s” recursive
    postfix: dict_eval[1] result 3600s
    postfix: dict_lookup: smtp_tls_session_cache_timeout = (notfound)
    postfix: dict_update: smtp_tls_session_cache_timeout = 3600s
    postfix: dict_lookup: smtp_tls_session_cache_timeout = 3600s
    postfix: dict_eval[1] 3600s
    postfix: mac_parse: 3600s
    postfix: dict_eval_action: type literal buf 3600s context mail_dict “3600s” recursive
    postfix: dict_eval[1] result 3600s
    postfix: dict_eval[1] 18000s
    postfix: mac_parse: 18000s
    postfix: dict_eval_action: type literal buf 18000s context mail_dict “3600s” recursive
    postfix: dict_eval[1] result 18000s
    postfix: dict_lookup: daemon_timeout = (notfound)
    postfix: dict_update: daemon_timeout = 18000s
    postfix: dict_lookup: daemon_timeout = 18000s
    postfix: dict_eval[1] 18000s
    postfix: mac_parse: 18000s
    postfix: dict_eval_action: type literal buf 18000s context mail_dict “18000s” recursive
    postfix: dict_eval[1] result 18000s
    postfix: dict_eval[1] 1s
    postfix: mac_parse: 1s
    postfix: dict_eval_action: type literal buf 1s context mail_dict “18000s” recursive
    postfix: dict_eval[1] result 1s
    postfix: dict_lookup: in_flow_delay = (notfound)
    postfix: dict_update: in_flow_delay = 1s
    postfix: dict_lookup: in_flow_delay = 1s
    postfix: dict_eval[1] 1s
    postfix: mac_parse: 1s
    postfix: dict_eval_action: type literal buf 1s context mail_dict “1s” recursive
    postfix: dict_eval[1] result 1s
    postfix: dict_lookup: mynetworks = 127.0.0.1/32,10.10.1.3/32
    postfix: dict_eval[1] 127.0.0.1/32,10.10.1.3/32
    postfix: mac_parse: 127.0.0.1/32,10.10.1.3/32
    postfix: dict_eval_action: type literal buf 127.0.0.1/32,10.10.1.3/32 context mail_dict “1s” recursive
    postfix: dict_eval[1] result 127.0.0.1/32,10.10.1.3/32
    postfix: dict_update: process_id = 1104
    postfix: dict_lookup: sendmail_path = /usr/sbin/sendmail
    postfix: dict_eval[1] /usr/sbin/sendmail
    postfix: mac_parse: /usr/sbin/sendmail
    postfix: dict_eval_action: type literal buf /usr/sbin/sendmail context mail_dict “127.0.0.1/32,10.10.1.3/32” recursive
    postfix: dict_eval[1] result /usr/sbin/sendmail
    postfix: dict_lookup: mailq_path = /usr/bin/mailq
    postfix: dict_eval[1] /usr/bin/mailq
    postfix: mac_parse: /usr/bin/mailq
    postfix: dict_eval_action: type literal buf /usr/bin/mailq context mail_dict “/usr/sbin/sendmail” recursive
    postfix: dict_eval[1] result /usr/bin/mailq
    postfix: dict_lookup: newaliases_path = /usr/bin/newaliases
    postfix: dict_eval[1] /usr/bin/newaliases
    postfix: mac_parse: /usr/bin/newaliases
    postfix: dict_eval_action: type literal buf /usr/bin/newaliases context mail_dict “/usr/bin/mailq” recursive
    postfix: dict_eval[1] result /usr/bin/newaliases
    postfix: dict_lookup: manpage_directory = /usr/share/man
    postfix: dict_eval[1] /usr/share/man
    postfix: mac_parse: /usr/share/man
    postfix: dict_eval_action: type literal buf /usr/share/man context mail_dict “/usr/bin/newaliases” recursive
    postfix: dict_eval[1] result /usr/share/man
    postfix: dict_lookup: sample_directory = /usr/share/doc/postfix/examples
    postfix: dict_eval[1] /usr/share/doc/postfix/examples
    postfix: mac_parse: /usr/share/doc/postfix/examples
    postfix: dict_eval_action: type literal buf /usr/share/doc/postfix/examples context mail_dict “/usr/share/man” recursive
    postfix: dict_eval[1] result /usr/share/doc/postfix/examples
    postfix: dict_lookup: readme_directory = /usr/share/doc/postfix
    postfix: dict_eval[1] /usr/share/doc/postfix
    postfix: mac_parse: /usr/share/doc/postfix
    postfix: dict_eval_action: type literal buf /usr/share/doc/postfix context mail_dict “/usr/share/doc/postfix/examples” recursive
    postfix: dict_eval[1] result /usr/share/doc/postfix
    postfix: dict_lookup: html_directory = no
    postfix: dict_eval[1] no
    postfix: mac_parse: no
    postfix: dict_eval_action: type literal buf no context mail_dict “/usr/share/doc/postfix” recursive
    postfix: dict_eval[1] result no
    postfix/postfix-script: fatal: usage: postfix start (or stop, reload, abort, flush, check, set-permissions, upgrade-configuration)

    And here are the results of a postconf -n

    command_directory = /usr/sbin
    config_directory = /etc/postfix
    daemon_directory = /usr/libexec/postfix
    debug_peer_level = 2
    enable_server_options = yes
    html_directory = no
    inet_interfaces = all
    mail_owner = postfix
    mailbox_size_limit = 0
    mailbox_transport = cyrus
    mailq_path = /usr/bin/mailq
    manpage_directory = /usr/share/man
    mydestination = $myhostname,localhost.$mydomain,techvernacular.com
    mydomain = techvernacular.com
    mydomain_fallback = localhost
    myhostname = mail.techvernacular.com
    mynetworks = 127.0.0.1/32,10.10.1.3/32
    mynetworks_style = host
    newaliases_path = /usr/bin/newaliases
    queue_directory = /private/var/spool/postfix
    readme_directory = /usr/share/doc/postfix
    sample_directory = /usr/share/doc/postfix/examples
    sendmail_path = /usr/sbin/sendmail
    setgid_group = postdrop
    smtpd_pw_server_security_options = login
    smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination,permit
    smtpd_sasl_auth_enable = yes
    smtpd_tls_key_file =
    smtpd_use_pw_server = yes
    unknown_local_recipient_reject_code = 550
    virtual_mailbox_domains =
    virtual_transport = virtual

    Again, if I email someone@techvernacular.com to anyone@techvernacular.com, there is no problem. But, if I attempt someone@foo.com to anyone@techvernacular.com, I get the error bounced back to me.

    Can someone please take a look at this and offer some assistance? I’ll send chocolate or booze, your choice. (Send ID if you opt for booze!)

    Evidently, I can’t send outside my domain either. I tried that this evening (don’t know why I hadn’t thought to capture the logs for this previously)

    This first part is the SMTP log for a message that is supposed to go outside my domain; it doesn’t.

    Feb 25 00:09:20 ns1 postfix/smtpd[1988]: 3B1694290A: client=unknown[10.10.1.211], sasl_method=LOGIN, sasl_username=drew
    Feb 25 00:09:20 ns1 postfix/cleanup[1991]: 3B1694290A: message-id=<5A36D05A-402C-414F-A931-1E4E3EA66C24@techvernacular.com>
    Feb 25 00:09:20 ns1 postfix/qmgr[1911]: 3B1694290A: from=, size=542, nrcpt=1 (queue active)
    Feb 25 00:09:50 ns1 postfix/smtp[1992]: connect to mail.drewlane.net[64.176.124.149]: Operation timed out (port 25)
    Feb 25 00:09:50 ns1 postfix/smtp[1992]: 3B1694290A: to=, relay=none, delay=30, status=deferred (connect to mail.drewlane.net[64.176.124.149]: Operation timed out)
    Feb 25 00:10:20 ns1 postfix/smtpd[1988]: disconnect from unknown[10.10.1.211]

    Now, here’s a message that stays within the domain and is sent/received as expected.

    Feb 25 00:11:11 ns1 postfix/smtpd[1988]: connect from unknown[10.10.1.211]
    Feb 25 00:11:11 ns1 postfix/smtpd[1988]: E585B42923: client=unknown[10.10.1.211], sasl_method=LOGIN, sasl_username=drew
    Feb 25 00:11:11 ns1 postfix/cleanup[2014]: E585B42923: message-id=<6FD122C8-0A5C-4019-BAD3-5F587553DFC2@techvernacular.com>
    Feb 25 00:11:11 ns1 postfix/qmgr[1911]: E585B42923: from=, size=554, nrcpt=1 (queue active)
    Feb 25 00:11:12 ns1 postfix/pipe[2016]: E585B42923: to=, relay=cyrus, delay=1, status=sent (mail.techvernacular.com)
    Feb 25 00:11:12 ns1 postfix/qmgr[1911]: E585B42923: removed

    I’m no whiz at reading logs, but why in the sam hell do I get “relay=none” on transport outside my domain and “relay=cyrus” for transport within my domain?

    #368409
    k12techman
    Participant

    Dad always said to check the simple stuff first. If the car won’t start, is there gas in it?…….

    I was dealing with two issues that were not a configuration problem on the server. As a matter of fact, the server was/is configured correctly.

    1st Problem: Piece of Warthog-booger Home Router – My router, while implying that it was performing port forwarding was, in fact, NOT. Used a tool at DynDNS to check open ports from the outside. POP, IMAP and SMTP ports were closed. They were open from the inside, but not the outside. Opened them and magically, mail delivery was working for incoming messages. Outgoing was still a problem.

    2nd Problem: SBC/AT&T (a.k.a. 666) Blocks Port 25 by Default – Called them and told them I needed port 25 unblocked. They did it! I know, I couldn’t believe it either.

    Lo and behold, with all the necessary ports open, mail works.

    On a side note, I did learn that you can force OS X Server to authenticate to an outgoing SMTP relay. While my ISP was kind enough to open Port 25, they did say it might not stay open when my IP changes. How nice. So, I purchased 300 daily outgoing relays from DynDNS for $20. Problem was, I had to find a way to get the server to authenticate with my credentials to their secure relay server.

    These instructions assume the postfix config files live in /etc/postfix.

    1. In /etc/postfix/main.cf add the lines:

    relayhost = desired.relay.xyz
    smtp_sasl_auth_enable=yes
    smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd
    smtp_sasl_security_options=

    Optionally, also add the lines:

    smtp_use_tls = yes
    smtp_tls_CAfile = /etc/postfix/cert.pem
    smtp_tls_session_cache_database = btree:/var/run/smtp_tls_session_cache

    to enable SSL/TLS when sending outgoing mail. Note that the path info in the second command may be different depending on your system and where you have installed your certificates. The last line may be omitted, but should help reduce CPU cycles verifying the certificate chain when sending outgoing E-Mail.

    2. Create a file /etc/postfix/sasl_passwd with the contents:

    desired.relay.xyz userid:password

    where userid and password are your username and password for your relay service.

    3. Next, change the ownership and permissions on the sasl_passwd file to protect it from unauthorized access.

    chown root:root /etc/postfix/sasl_passwd && chmod 600 /etc/postfix/sasl_passwd

    4. Finally, create a database file from the contents of the sasl_passwd file:

    postmap hash:/etc/postfix/sasl_passwd

    5. OPTIONAL: If you wish to relay only specific domains you will need to do the following:

    Remove the relayhost = desired.relay.xyz entry in main.cf, if one exists.

    Add the following line to your main.cf file: transport_maps = hash:/etc/postfix/transport

    Edit /etc/postfix/transport and update it with something similar to the following:

    # Syntax: .domain transport:relay_host
    # Specifies specific domains for local delivery
    my.domain.com :

    # Specify all subdomains for local delivery
    .my.domain :

    # Specify domains that need to be relayed through outbound.mailhop.org
    aol.com relay:desired.relay.xyz
    hotmail.com relay:desired.relay.xyz

    Create a database file from the contents of the transport file: postmap hash:/etc/postfix/transport

    6. Lastly, reload postfix: postfix reload

    I’ve made these instructions generic, but have cabbaged them from here:

    https://www.dyndns.com/support/kb/archives/mail_servers_and_mailhop_outbound.html#postfix (you need an account to see it….)

    There’s a pretty good guide here, too: http://postfix.state-of-mind.de/patrick.koetter/smtpauth/smtp_auth_mailservers.html

    If you need public DNS, I would say you can’t go wrong with DynDNS. They have been supportive, their pricing is reasonable, and they have a cool name.

    Postfix WILL do this as long as you don’t mind editing the main.cf file manually.

    Now, I’m going out and buying myself chocolate AND booze…..

Viewing 2 posts - 1 through 2 (of 2 total)
  • You must be logged in to reply to this topic.