-1

I have "Ubuntu 20.04.3 LTS" on a raspberry pi 4, and I'm trying to config postfix to use sender dependent relayhosts.

Postfix is mail_version = 3.4.13 and i have a dynamic IP.

The schema looks like this:

  1. local user sends email to postfix (local emailserver)
  2. postfix rewrites FROM Address
  3. dependent on the rewrite FROM Address pick the right relayhost
  4. submits the mail to the relayhost via port 587

for point 1) an 2) i have a file sender_canonical created:

[email protected] [email protected]
[email protected] [email protected]

For point 3) i have a file relaymap created:

@gmx.de mail.gmx.net:587
@gmail.com smtp.gmail.com:587

For point 4) i have a file pass_smarthost created:

[email protected] [email protected]:UserA-GMX-Password
[email protected] [email protected]:UserB-Gmail-Password

I tested it with this:

echo "test" | sendmail -f ttm  [email protected]

But currently i get:

tail -f /var/log/syslog | grep --line-buffered "postfix\|relay\|generic"

Sep  7 18:28:29 ubuntu-RPI4 postfix/pickup[24810]: 5CFF24028B: uid=0 from=<ttm>
Sep  7 18:28:29 ubuntu-RPI4 postfix/cleanup[24830]: 5CFF24028B: message-id=<[email protected]>
Sep  7 18:28:29 ubuntu-RPI4 postfix/qmgr[24811]: 5CFF24028B: from=<[email protected]>, size=256, nrcpt=1 (queue active)
Sep  7 18:28:29 ubuntu-RPI4 postfix/smtp[24833]: connect to mx04.posteo.de[185.67.36.64]:25: Connection refused
Sep  7 18:28:29 ubuntu-RPI4 postfix/smtp[24833]: connect to mx01.posteo.de[185.67.36.61]:25: Connection refused
Sep  7 18:28:29 ubuntu-RPI4 postfix/smtp[24833]: connect to mx01.posteo.de[185.67.36.62]:25: Connection refused
Sep  7 18:28:29 ubuntu-RPI4 postfix/smtp[24833]: connect to mx03.posteo.de[185.67.36.63]:25: Connection refused
Sep  7 18:28:29 ubuntu-RPI4 postfix/smtp[24833]: connect to mx03.posteo.de[185.67.36.70]:25: Connection refused
Sep  7 18:28:29 ubuntu-RPI4 postfix/smtp[24833]: 5CFF24028B: to=<[email protected]>, relay=none, delay=0.51, delays=0.07/0.08/0.36/0, dsn=4.4.1, status=deferred (connect to mx03.posteo.de[185.67.36.70]:25: Connection refused)

For me it looks like, that postfix tries to deliver the email directly to the recipient server on port 25 - instead of using the relayhost (here gmx.de). And the rewrite didnt come to the correct address - maybe a circle?

I tried to add the "-v" option in the master.cf to see more details or get a hint whats going round.

But i didn't get the error. What am I missing? Any hint would be helpful.

Thank you in advance.

main.cf:

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level = 2



# TLS parameters
# smtpd
smtpd_tls_cert_file=/etc/postfix/sslcert/mailserver20210902.crt
smtpd_tls_key_file=/etc/postfix/sslcert/mailserver20210902.key
broken_sasl_auth_clients = yes
smtpd_tls_security_level=may
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_tls_auth_only = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = $mydomain
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_sender_login_maps = proxy:mysql:/etc/postfix/mysql_sender_login_maps.cf
smtpd_recipient_restrictions = permit_sasl_authenticated permit_mynetworks reject_unauth_destination reject_unknown_reverse_client_hostname
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination


myhostname = ttmsacer.homenet
mydomain = $myhostname
mydestination = localhost.homenet, localhost

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
relayhost =
mynetworks = 127.0.0.0/8, [::ffff:127.0.0.0]/104, [::1]/128, 192.168.178.0/24

mailbox_size_limit = 0
recipient_delimiter = +
message_size_limit = 52768000
# disable virtual_mailbox_limit by setting it to 0:
virtual_mailbox_limit = 0

inet_interfaces = 127.0.0.1, localhost, 192.168.178.20
inet_protocols = all

proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps

local_transport = virtual

virtual_mailbox_base = /home/vmail
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf

virtual_minimum_uid = 104
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_transport  = lmtps:inet:localhost:24

# smarthost / smtp
smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_policy_maps = hash:/etc/postfix/tls_policy
smtp_sender_dependent_authentication = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_connection_cache_on_demand = no
smtp_sasl_password_maps = hash:/etc/postfix/pass_smarthost

sender_dependent_relayhost_maps = hash:/etc/postfix/relaymap
sender_canonical_classes = envelope_sender, header_sender
sender_canonical_maps = hash:/etc/postfix/sender_canonical
receive_override_options = no_address_mappings

master.cf

# Postfix master process configuration file.  For details on the format
# of the file, see the master(5) manual page (command: "man 5 master" or
# on-line: http://www.postfix.org/master.5.html).
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (no)    (never) (100)
# ==========================================================================
smtp      inet  n       -       y       -       -       smtpd -v
#smtp      inet  n       -       y       -       1       postscreen
#smtpd     pass  -       -       y       -       -       smtpd
#dnsblog   unix  -       -       y       -       0       dnsblog
#tlsproxy  unix  -       -       y       -       0       tlsproxy
submission inet n       -       n       -       -       smtpd -v
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_tls_auth_only=yes
#  -o smtpd_reject_unlisted_recipient=no
#  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
smtps     inet  n       -       y       -       -       smtpd -v
  -o syslog_name=postfix/smtps
#  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_reject_unlisted_recipient=no
#  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#628       inet  n       -       y       -       -       qmqpd
pickup    unix  n       -       y       60      1       pickup -v
cleanup   unix  n       -       y       -       0       cleanup -v
qmgr      unix  n       -       n       300     1       qmgr
#qmgr     unix  n       -       n       300     1       oqmgr
tlsmgr    unix  -       -       y       1000?   1       tlsmgr
rewrite   unix  -       -       y       -       -       trivial-rewrite -v
bounce    unix  -       -       y       -       0       bounce
defer     unix  -       -       y       -       0       bounce
trace     unix  -       -       y       -       0       bounce
verify    unix  -       -       y       -       1       verify
flush     unix  n       -       y       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       y       -       -       smtp
relay     unix  -       -       y       -       -       smtp
        -o syslog_name=postfix/$service_name
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       y       -       -       showq
error     unix  -       -       y       -       -       error
retry     unix  -       -       y       -       -       error
discard   unix  -       -       y       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       y       -       -       lmtp
anvil     unix  -       -       y       -       1       anvil
scache    unix  -       -       y       -       1       scache
postlog   unix-dgram n  -       n       -       1       postlogd
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent.  See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
#
# ====================================================================
#
# Recent Cyrus versions can use the existing "lmtp" master.cf entry.
#
# Specify in cyrus.conf:
#   lmtp    cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4
#
# Specify in main.cf one or more of the following:
#  mailbox_transport = lmtp:inet:localhost
#  virtual_transport = lmtp:inet:localhost
#
# ====================================================================
#
# Cyrus 2.1.5 (Amos Gouaux)
# Also specify in main.cf: cyrus_destination_recipient_limit=1
#
#cyrus     unix  -       n       n       -       -       pipe
#  user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
#
# ====================================================================
# Old example of delivery via Cyrus.
#
#old-cyrus unix  -       n       n       -       -       pipe
#  flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
#
# ====================================================================
#
# See the Postfix UUCP_README file for configuration details.
#
uucp      unix  -       n       n       -       -       pipe
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Other external delivery methods.
#
ifmail    unix  -       n       n       -       -       pipe
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp     unix  -       n       n       -       -       pipe
  flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix  -       n       n       -       2       pipe
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman   unix  -       n       n       -       -       pipe
  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
  ${nexthop} ${user}
# ====================================================================
lmtps     unix  -       -        -      -       -       lmtp
  -o lmtp_use_tls=yes
  -o lmtp_enforce_tls=yes
  -o lmtp_tls_mandatory_protocols=!SSLv2,!SSLv3
  -o lmtp_tls_protocols=!SSLv2,!SSLv3
  -o lmtp_tls_mandatory_ciphers=high
  -o lmtp_tls_ciphers=high
  -o lmtp_send_xforward_command=yes
  -o lmtp_tls_security_level=encrypt
  -o lmtp_tls_note_starttls_offer=yes
  -o lmtp_address_preference=ipv4


1 Answer 1

1

Solved.

The main issue was in main.cf with this setting: "receive_override_options = no_address_mappings" after removing it, the rewriting works!

Thanks to raf and postfix-users on the postfix-users mailing list.

my final main.cf:

# See /usr/share/postfix/main.cf.dist for a commented, more complete version

# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level = 2



# TLS parameters
# smtpd
smtpd_tls_cert_file=/etc/postfix/sslcert/mailserver20210902.crt
smtpd_tls_key_file=/etc/postfix/sslcert/mailserver20210902.key
broken_sasl_auth_clients = no
smtpd_tls_security_level=may
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_tls_auth_only = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = $mydomain
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_sender_login_maps = proxy:mysql:/etc/postfix/mysql_sender_login_maps.cf
smtpd_recipient_restrictions = permit_sasl_authenticated permit_mynetworks reject_unauth_destination reject_unknown_reverse_client_hostname
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination


myhostname = ubuntu-RPI4.homenet
mydomain = ttmsacer.homenet 
mydestination = localhost.homenet, localhost

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
relayhost =
mynetworks = 127.0.0.0/8, [::ffff:127.0.0.0]/104, [::1]/128, 192.168.178.0/24
#relay_domains = *

mailbox_size_limit = 0
recipient_delimiter = +
message_size_limit = 52768000
# disable virtual_mailbox_limit by setting it to 0:
virtual_mailbox_limit = 0

inet_interfaces = 127.0.0.1, localhost, 192.168.178.20
inet_protocols = all


proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps

local_transport = virtual

virtual_mailbox_base = /home/vmail
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
#   proxy:mysql:/etc/postfix/mysql_virtual_alias_domain_maps.cf,
#   proxy:mysql:/etc/postfix/mysql_virtual_alias_domain_catchall_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
#   proxy:mysql:/etc/postfix/mysql_virtual_alias_domain_mailbox_maps.cf


virtual_minimum_uid = 104
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_transport  = lmtps:inet:localhost:24

# smarthost / smtp
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_policy_maps = hash:/etc/postfix/tls_policy
smtp_sender_dependent_authentication = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous 
smtp_connection_cache_on_demand = no
smtp_sasl_password_maps = hash:/etc/postfix/pass_smarthost


sender_dependent_relayhost_maps = hash:/etc/postfix/relaymap
sender_canonical_classes = envelope_sender, header_sender
canonical_maps = hash:/etc/postfix/sender_canonical
sender_canonical_maps = hash:/etc/postfix/sender_canonical
smtp_generic_maps = hash:/etc/postfix/sender_canonical

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .