4

For the last day I was searching for solutions for this problem:

My postfix(+dovecot) configuration is fully able to receive e-mails and to serve them via IMAP but it fails at accepting them via SMTP (port 587).

I've already tried adding example.net to relay_domains, but it failed as it's already in the virtual mailbox domains database.

I've already tried to add mail.example.net to the virtual mailbox domains database.

For set-up I followed ArsTechnica's guide on setting up an e-mail server. Maybe one will recognize some elements. Note: I couldn't follow the guide exactly due to the lack of the postfix-dovecot bundle, but I think I've overcome potential issue as I can receive mail.
Note further: Sending to other adresses (like webmaster@example.net) does work.
I can provide any files needed.

If needed: the postfix version 2.11.3

Please note: example.net is the replacement for my domain. It is valid, DNS is set up and valid TLS certificates are installed.


CONFIGURATION FILES

postfix: 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
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, reject_unknown_helo_hostname, permit
smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
smtpd_recipient_restrictions = reject_unknown_client_hostname, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, reject_unauth_destination, reject_invalid_hostname, reject_non_fqdn_sender
#smtpd_relay_restrictions = reject_unknown_client_hostname,reject_unknown_sender_domain, reject_unknown_recipient_domain,reject_unauth_pipelining, permit_mynetworks,permit_sasl_authenticated, reject_unauth_destination, reject_invalid_hostname, reject_non_fqdn_sender
smtpd_sender_restrictions = reject_unknown_sender_domain, reject_sender_login_mismatch
smtpd_sender_login_maps = $virtual_mailbox_maps
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

# TLS parameters
broken_sasl_auth_clients = yes
smtpd_use_tls=yes
smtpd_tls_auth_only = yes
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
tls_random_source = dev:/dev/urandom

smtpd_tls_ask_ccert = yes
smtpd_tls_cert_file = /etc/crypto/mail.example.net.chained.crt
smtpd_tls_key_file = /etc/crypto/mail.example.net.key
smtpd_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtpd_tls_ciphers = high
smtpd_tls_loglevel = 1
smtpd_tls_security_level = encrypt
smtpd_tls_session_cache_timeout = 3600s 

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = example.net
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
#mydestination =  $mydomain, raspberrysyncserver, localhost.localdomain, localhost
mydestination = raspberrysyncserver, localhost.localdomain, localhost
relayhost = 
mynetworks = 127.0.0.0/8 192.168.2.0/24 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
#relay_domains = example.net

unknown_address_reject_code = 550
unknown_hostname_reject_code = 550
unknown_client_reject_code = 550

canonical_maps = hash:/etc/postfix/canonical
home_mailbox = Maildir/
message_size_limit = 104857600
virtual_alias_maps = hash:/etc/postfix/virtual
virtual_mailbox_domains = hash:/etc/postfix/virtual-mailbox-domains
virtual_mailbox_maps = hash:/etc/postfix/virtual-mailbox-users
virtual_transport = dovecot

dovecot_destination_recipient_limit = 1

default_destination_concurrency_limit = 5
disable_vrfy_command = yes
relay_destination_concurrency_limit = 1
smtp_tls_note_starttls_offer = yes
#smtp_tls_security_level = encrypt
smtp_dns_support_level = dnssec
smtp_tls_security_level = dane
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated,reject_unknown_client_hostname, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, reject_unauth_destination, reject_invalid_hostname, reject_non_fqdn_sender

milter_default_action = accept
milter_connect_macros = j {daemon_name} v {if_name} _
non_smtpd_milters = $smtpd_milters
#smtpd_milters = unix:/spamassassin/spamd.sock unix:/clamav/clamav-milter.ctl unix:/opendkim/opendkim.sock
smtpd_milters = unix:/clamav/clamav-milter.ctl unix:/opendkim/opendkim.sock

postfix: 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").
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       -       -       -       smtpd
#smtp      inet  n       -       -       -       1       postscreen
#smtpd     pass  -       -       -       -       -       smtpd
#dnsblog   unix  -       -       -       -       0       dnsblog
#tlsproxy  unix  -       -       -       -       0       tlsproxy
submission inet n       -       -       -       -       smtpd
#  -o syslog_name=postfix/submission
#  -o smtpd_tls_security_level=encrypt
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#smtps     inet  n       -       -       -       -       smtpd
#  -o syslog_name=postfix/smtps
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#628       inet  n       -       -       -       -       qmqpd
pickup    fifo  n       -       -       60      1       pickup
cleanup   unix  n       -       -       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  n       -       n       300     1       oqmgr
tlsmgr    unix  -       -       -       1000?   1       tlsmgr
rewrite   unix  -       -       -       -       -       trivial-rewrite
bounce    unix  -       -       -       -       0       bounce
defer     unix  -       -       -       -       0       bounce
trace     unix  -       -       -       -       0       bounce
verify    unix  -       -       -       -       1       verify
flush     unix  n       -       -       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       -       -       -       smtp
relay     unix  -       -       -       -       -       smtp
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       -       -       -       showq
error     unix  -       -       -       -       -       error
retry     unix  -       -       -       -       -       error
discard   unix  -       -       -       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       -       -       -       lmtp
anvil     unix  -       -       -       -       1       anvil
scache    unix  -       -       -       -       1       scache
#
# ====================================================================
# 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}

dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver
  -f ${sender} -d $(recipient)

mail.log (snippet)

May  3 16:29:09 raspberrysyncserver postfix/smtpd[30395]: Trusted TLS connection established from MyComputer[192.168.2.150]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
May  3 16:29:11 raspberrysyncserver postfix/smtpd[30395]: NOQUEUE: reject: RCPT from MyComputer[192.168.2.150]: 554 5.7.1 <recipient@web.de>: Relay access denied; from=<sender@example.net> to=<recipient@web.de> proto=ESMTP helo=<[192.168.2.150]>
May  3 16:29:13 raspberrysyncserver postfix/smtpd[30395]: disconnect from MyComputer[192.168.2.150]
  • So, you are sending email to recipient@web.de. Is that supposed to be a local domain or are you trying to relay? btw. if you follow a guide, it's usually good practice to link it right away. – Fox May 3 '15 at 15:08
  • web.de is an actual e-mail provider on the internet. added the links to the guide. recipient@web.de isn't the actual adress but rather some valid adress from me from which I can send and receive – SEJPM May 3 '15 at 15:12
  • 1
    So local email is working fine. It just won't relay. That is quite strange. I'd try adding debug_peer_list 192.168.2.150 to the config and see what happens in the log. IIRC with higher verbosity it should tell you why it was rejected. – Fox May 3 '15 at 15:22
  • @Fox, log's here: pastebin.com/eqhsxZBL, not sure how to insert it into my main post, as it's 50k characters+ – SEJPM May 3 '15 at 15:33
5

The rejection was caused by smtpd_recipient_restrictions. Delete reject_unauth_destination from smtpd_recipient_restrictions should fix the problem.

You have already put reject_unauth_destination in smtpd_relay_restrictions, so no need to put it again in smtpd_recipient_restrictions.

3

This is the tell-tale part of the log. Leads to masegaloeh's answer.

May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: >>> START Recipient address RESTRICTIONS <<<
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: generic_checks: name=reject_unknown_client_hostname
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: reject_unknown_client: mycomputer 192.168.2.150
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: generic_checks: name=reject_unknown_client_hostname status=0
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: generic_checks: name=reject_unknown_sender_domain
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: reject_unknown_address: sender@mydomain.net
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: ctable_locate: leave existing entry key sender@mydomain.net
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: generic_checks: name=reject_unknown_sender_domain status=0
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: generic_checks: name=reject_unknown_recipient_domain
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: reject_unknown_address: recipient@web.de
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: ctable_locate: move existing entry key recipient@web.de
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: reject_unknown_mailhost: web.de
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: lookup web.de type MX flags 0
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: dns_query: web.de (MX): OK
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: dns_get_answer: type MX for web.de
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: dns_get_answer: type MX for web.de
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: generic_checks: name=reject_unknown_recipient_domain status=0
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: generic_checks: name=reject_unauth_pipelining
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: reject_unauth_pipelining: RCPT
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: generic_checks: name=reject_unauth_pipelining status=0
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: generic_checks: name=reject_unauth_destination
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: reject_unauth_destination: recipient@web.de
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: permit_auth_destination: recipient@web.de
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: ctable_locate: leave existing entry key recipient@web.de
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: NOQUEUE: reject: RCPT from mycomputer[192.168.2.150]: 554 5.7.1 <recipient@web.de>: Relay access denied; from=<sender@mydomain.net> to=<recipient@web.de> proto=ESMTP helo=<[192.168.2.150]>
May  3 17:26:04 raspberrysyncserver postfix/smtpd[31303]: generic_checks: name=reject_unauth_destination status=2
  • can't mark your answer as well "the answer", but many thanks for your help and analysis – SEJPM May 3 '15 at 15:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.