Postfix TLS

noobie

New Member
Guten Tag,

seit mehreren Tagen versuche ich meinen auf dem Debian Jessie installierten Postfix in der Version 2.11.3-1 das Empfangen und Verschicken über TLS zu ermöglichen.

Die benötigten Zertifikate sind generiert und in der Konfiguration hinterlegt.

Ausschnitt aus dem main.cf

Code:
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert.key
smtp_tls_cert_file=/etc/ssl/certs/ssl-cert.pem
smtp_tls_key_file=/etc/ssl/private/ssl-cert.key
smtpd_use_tls=yes
smtp_use_tls=yes
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 1
smtp_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_enforce_tls = no
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

Beim Emailempfang sehe ich das TLS verwendet wird. Beim Versand funktioniert es jedoch nicht. Mein Postfix versucht erst gar nicht eine TLS Verbindung auszuhandeln. Hat dazu jemand vielleicht eine Idee?

Danke im voraus
 
Steht in deiner master.cf auch was zu smtps?

ja es steht schon was drin, ist aber alles auskommentiert (default)

Code:
#smtps     inet  n       -       -       -       -       smtpd
#  -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
 
Was passiert bei
Code:
smtp_tls_security_level = encrypt
?

--
.A.
 
Was passiert bei
Code:
smtp_tls_security_level = encrypt
?

--
.A.

dann bekomme ich im Logfile die Meldung
Code:
Apr 28 15:46:25  dsn=4.7.4, status=deferred (TLS is required, but was not offered by host 127.0.0.1[127.0.0.1])

Soll jetzt nur TLS erlaubt sein oder wie muss ich das
Zitat:
über TLS zu ermöglichen.
verstehen?
Doch nur wenn Client bzw. Ziel-SMTP das erlaubt, oder? Wie?

ganz genau, zum Beispiel um bei Gmail das rote Schloss wegzubekommen, da Gmail TLS anbietet
 
Mit
Code:
smtp_tls_security_level = may
nutzt Du TLS, wenn der nächste Host dies anbietet. Das tut aber der nächste (127.0.0.1) nicht. Daher gibt es hier eine Verbindung ohne TLS.

Mit
Code:
smtp_tls_security_level = encrypt
erzwingst Du TLS. Wenn der nächste Host das nicht anbietet, wird die Mail nicht versandt.

--
.A.
 
Das rote Schloss und die GMail website hat allerdings nix mit SMTP zu tun, WWW- und SMTP-Server sind unterschiedlich. ;)

Ja, was denn nun? SSL-only bei SMTP erzwingen oder nicht?

Wenn du SSL bei Postfix mit encrypt erzwingst, kannst du keine mails mehr weiter an andere Mailserver senden, wenn die kein TLS haben.
Willst du das?
 
Das rote Schloss und die GMail website hat allerdings nix mit SMTP zu tun, WWW- und SMTP-Server sind unterschiedlich. ;)

Ja, was denn nun? SSL-only bei SMTP erzwingen oder nicht?

Wenn du SSL bei Postfix mit encrypt erzwingst, kannst du keine mails mehr weiter an andere Mailserver senden, wenn die kein TLS haben.
Willst du das?

Nein, ich möchte es nicht erzwingen. Ich möchte das es genutzt wird wenn die Gegenstelle eine Verbindung über TLS anbietet (wie zum Beispiel Gmail).

Das Rote Schloss von Gmail war nicht auf WWW bezogen sondern auf die eingehenden Email die mit einen roten Schloss markiert und mit der Meldung "Diese Nachricht wurde von blablabla nicht verschlüsselt" versehen sind.
 
DIe smtps-Zeile ist eigentlich nicht notwendig, die sorgt dafür, dass Postfix auf Port 465 auf explizit SSL-verschlüsselte Verbindungen lauscht - und der Standard ist mittlerweile zu Gunsten von STARTTLS als veraltet deklariert. Hier wird außerdem auch nur die Verbindung zwischen einem MUA wie z.B. Thunderbird und dem Mailserver verschlüsselt. Mailserver untereinander verwenden per Default Port 25 sowohl für verschlüsselte als auch unverschlüsselte Verbindungen.
Ob ausgehende Verbindunge per TLS verschlüsselt werden, kann im Log von Postfix nachgeprüft werden, wenn man das Logging dafür aktiviert, dazu in der main.cf folgende Zeile einfügen/editieren:
Code:
smtp_tls_loglevel = 1
Höhere Loglevel sollte man nur zu Debugging-Zwecken verwenden, siehe http://www.postfix.org/postconf.5.html#smtp_tls_loglevel
 
Code:
smtp_tls_cert_file=/etc/ssl/certs/ssl-cert.pem
smtp_tls_key_file=/etc/ssl/private/ssl-cert.key
Bitte die Doku dazu lesen...


Ansonsten so als Vorschlag (Bitte selbst anpassen):
main.cf
Code:
always_add_missing_headers = yes
allow_percent_hack = no
biff = no
disable_vrfy_command = yes
dovecot_destination_recipient_limit = 1
enable_long_queue_ids = yes
fast_flush_domains =
home_mailbox = .maildir/
inet_interfaces = all
inet_protocols = all
lmtp_tls_mandatory_protocols = !SSLv2, !SSLv3
lmtp_tls_protocols = !SSLv2, !SSLv3
local_header_rewrite_clients = permit_mynetworks, permit_sasl_authenticated
mailbox_size_limit = 0
masquerade_domains = $mydomain
masquerade_exceptions = root, mailer-daemon
message_size_limit = 0
mydestination = $myhostname, localhost.$mydomain, localhost
mydomain = example.org
myhostname = mail.$mydomain
mynetworks_style = host
postscreen_dnsbl_action = enforce
postscreen_dnsbl_sites =
  zen.spamhaus.org*3
  bl.mailspike.net*3
  ix.dnsbl.manitu.net*2
  bl.spameatingmonkey.net*1
  cbl.abuseat.org*1
  bl.spamcop.net*1
  swl.spamhaus.org*-10
  wl.mailspike.net*-10
postscreen_dnsbl_threshold = 5
postscreen_greet_action = enforce
postscreen_non_smtp_command_enable = yes
postscreen_pipelining_enable = yes
recipient_delimiter = +
remote_header_rewrite_domain = domain.invalid
smtp_tls_CAfile = /usr/local/share/certs/ca-root-nss.crt
smtp_tls_ciphers = medium
smtp_tls_exclude_ciphers = aDSS, kECDHe, kECDHr, kDHd, kDHr, SEED, IDEA, RC2, RC4, eNULL, aNULL, MEDIUM, LOW, EXPORT
smtp_tls_loglevel = 1
smtp_tls_mandatory_ciphers = medium
smtp_tls_mandatory_exclude_ciphers = aDSS, kECDHe, kECDHr, kDHd, kDHr, SEED, IDEA, RC2, RC4, eNULL, aNULL, MEDIUM, LOW, EXPORT
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
smtp_tls_note_starttls_offer = yes
smtp_tls_protocols = !SSLv2, !SSLv3
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_client_restrictions =
  sleep 1,
  permit
smtpd_data_restrictions =
  reject_unauth_pipelining,
  reject_multi_recipient_bounce,
  permit
smtpd_end_of_data_restrictions =
  permit
smtpd_etrn_restrictions =
  reject
smtpd_helo_required = yes
smtpd_helo_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_invalid_helo_hostname,
  reject_non_fqdn_helo_hostname,
  permit
smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_recipient,
  reject_unknown_recipient_domain,
  permit
smtpd_relay_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  defer_unauth_destination,
  permit
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
smtpd_sender_restrictions =
  reject_non_fqdn_sender,
  reject_unknown_sender_domain,
  permit
smtpd_tls_CAfile = /data/pki/ca/intermediate-ca-chain.pem
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /data/pki/certs/mail.example.org.crt
smtpd_tls_ciphers = medium
smtpd_tls_eecdh_grade = strong
smtpd_tls_exclude_ciphers = aDSS, kECDHe, kECDHr, kDHd, kDHr, SEED, IDEA, RC2, RC4, eNULL, aNULL, MEDIUM, LOW, EXPORT
smtpd_tls_key_file = /data/pki/private/mail.example.org.key
smtpd_tls_loglevel = 1
smtpd_tls_mandatory_ciphers = medium
smtpd_tls_mandatory_exclude_ciphers = aDSS, kECDHe, kECDHr, kDHd, kDHr, SEED, IDEA, RC2, RC4, eNULL, aNULL, MEDIUM, LOW, EXPORT
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_protocols = !SSLv2, !SSLv3
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
strict_rfc821_envelopes = yes
tls_daemon_random_bytes = 64
tls_high_cipherlist = EECDH+CHACHA20 EECDH+AESGCM EECDH+AES256 EECDH+AES128 EECDH+3DES EDH+CHACHA20 EDH+AESGCM EDH+AES256 EDH+AES128 EDH+3DES
tls_medium_cipherlist = EECDH+CHACHA20 EECDH+AESGCM EECDH+AES256 EECDH+AES128 EECDH+3DES EDH+CHACHA20 EDH+AESGCM EDH+AES256 EDH+AES128 EDH+3DES AESGCM AES256 AES128 3DES
tls_preempt_cipherlist = yes
tls_random_bytes = 64
tls_ssl_options = NO_COMPRESSION
tlsproxy_tls_mandatory_protocols = $smtpd_tls_mandatory_protocols
tlsproxy_tls_protocols = $smtpd_tls_protocols
unknown_local_recipient_reject_code = 450
master.cf
Code:
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (no)    (never) (100)
# ==========================================================================
#smtp      inet  n       -       n       -       -       smtpd
smtp      inet  n       -       n       -       1       postscreen
smtpd     pass  -       -       n       -       -       smtpd
dnsblog   unix  -       -       n       -       0       dnsblog
tlsproxy  unix  -       -       n       -       0       tlsproxy
submission inet n       -       n       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
#  -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
#smtps     inet  n       -       n       -       -       smtpd
#  -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       -       n       -       -       qmqpd
pickup    unix  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      unix  n       -       n       300     1       qmgr
#qmgr     unix  n       -       n       300     1       oqmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       n       -       -       smtp
relay     unix  -       -       n       -       -       smtp
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache
#
# ====================================================================
# 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/local/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/local/sbin/bsmtp -f $sender $nexthop $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/local/libexec/dovecot/dovecot-lda
   -f ${sender} -a ${recipient} -d ${user}@${nexthop}
 
Back
Top