Good to Know Database

CentOS 5: Verbindungen zwischen Postfix und SMTP-Relay-Server mit TLS verschlüsseln


Wie Sie von einem internen Mailserver über einen SMTP-Relay-Server oder auch Smarthost genannt, E-Mails an beliebige externe E-Mail-Adressen versenden, habe ich Ihnen im Tutorial CentOS 5: Postfix soll E-Mails über SMTP-Relay-Server versenden beschrieben. Die Authentifizierung und die Datenübertragung zwischen Ihrem Mailserver und dem SMTP-Relay-Server erfolgt nach dieser Anleitung jedoch unverschlüsselt und kann eventuell von unbefugten Personen mitgelesen werden. Um dieses Sicherheitsrisiko zu beseitigen, wollen wir die Verbindung zwischen den beiden Servern mittels TLS (Transport Layer Security) verschlüsseln. Voraussetzung hierfür ist natürlich, dass der jeweils verwendete SMTP-Relay-Server TLS unterstützt.

Wenn Sie sich nicht sicher sind ob der jeweilige SMTP-Relay-Server TLS unterstützt oder wenn Sie mehrere SMTP-Relay-Server verwenden und einer davon TLS nicht unterstützt, dann sollten Sie den Parameter smtp_tls_security_level auf may setzen. Dadurch wird TLS automatisch aktiviert wenn der Smarthost TLS anbietet. Sollte der Smarthost TLS nicht unterstützen, wird zwangsläufig eine unverschlüsselte Verbindung aufgebaut.

[root@centos5 ~]# postconf -e 'smtp_tls_security_level = may'

Sind Sie sich jedoch sicher, dass alle verwendeten Smarthosts TLS unterstützen und Sie auf keinen Fall eine unverschlüsselte Verbindung zulassen wollen, dann setzen Sie den Parameter auf den Wert encrypt.

[root@centos5 ~]# postconf -e 'smtp_tls_security_level = encrypt'

Im Grunde sind Sie jetzt bereits mit der Konfiguration fertig und Ihr Mailserver verwendet wenn möglich eine verschlüsselte Verbindung zum jeweiligen SMTP-Relay-Server sobald Sie eine E-Mail an eine externe E-Mail-Adresse versenden. Die E-Mail wird Ihr Ziel auch erreichen, aber wenn Sie die Logdatei /var/log/maillog überprüfen, werden Sie die folgenden Fehlermeldungen sehen.

[root@centos5 ~]# tail -f /var/log/maillog
[...]
Aug 27 16:15:52 centos5 postfix/pickup[15891]: 233CF1C9A7D: uid=500 from=<georg>
Aug 27 16:15:52 centos5 postfix/cleanup[16278]: 233CF1C9A7D: message-id=<20090827141552.233CF1C9A7D@centos5.home.lan>
Aug 27 16:15:52 centos5 postfix/qmgr[12935]: 233CF1C9A7D: from=<email-adresse@gmx.net>, size=331, nrcpt=1 (queue active)
Aug 27 16:15:52 centos5 postfix/smtp[16280]: certificate verification failed for mail.gmx.net: num=20:unable to get local issuer certificate
Aug 27 16:15:52 centos5 postfix/smtp[16280]: certificate verification failed for mail.gmx.net: num=27:certificate not trusted
Aug 27 16:15:52 centos5 postfix/smtp[16280]: certificate verification failed for mail.gmx.net: num=21:unable to verify the first certificate
Aug 27 16:15:53 centos5 postfix/smtp[16280]: 233CF1C9A7D: to=<empfaenger@domain.de>, relay=mail.gmx.net[213.165.64.21]:25, delay=1.3, delays=0.07/0.04/0.77/0.46, dsn=2.6.0, status=sent (250 2.6.0 Message accepted {mp031})
Aug 27 16:15:53 centos5 postfix/qmgr[12935]: 233CF1C9A7D: removed
[...]
Aug 27 16:17:47 centos5 postfix/pickup[15891]: CCBE11C9A62: uid=504 from=<hans>
Aug 27 16:17:47 centos5 postfix/cleanup[16282]: CCBE11C9A62: message-id=<20090827141747.CCBE11C9A62@centos5.home.lan>
Aug 27 16:17:47 centos5 postfix/qmgr[12935]: CCBE11C9A62: from=<email-adresse@web.de>, size=305, nrcpt=1 (queue active)
Aug 27 16:17:48 centos5 postfix/smtp[16285]: certificate verification failed for smtp.web.de: num=20:unable to get local issuer certificate
Aug 27 16:17:48 centos5 postfix/smtp[16285]: certificate verification failed for smtp.web.de: num=27:certificate not trusted
Aug 27 16:17:48 centos5 postfix/smtp[16285]: certificate verification failed for smtp.web.de: num=21:unable to verify the first certificate
Aug 27 16:17:49 centos5 postfix/smtp[16285]: CCBE11C9A62: to=<empfaenger@domain.de>, relay=smtp.web.de[217.72.192.157]:25, delay=1.6, delays=0.29/0.18/0.57/0.59, dsn=2.0.0, status=sent (250 OK id=1MgNSK-000702-00)
Aug 27 16:17:49 centos5 postfix/qmgr[12935]: CCBE11C9A62: removed

Das liegt daran, dass Postfix das Zertifikat von GMX.net beziehungsweise Web.de abfragen kann, jedoch nicht sicherstellen kann, ob es vertrauenswürdig ist. Dazu benötigt Postfix das Root-Zertifikat der jeweiligen Zertifizierungsstelle (Certification Authority oder kurz CA).

Damit Sie herausfinden, welche Zertifizierungsstelle das Zertifikat auf dem verwendeten Smarthost ausgestellt hat, rufen Sie den folgenden Befehl auf und geben die Adresse des SMTP-Relay-Servers an.

[root@centos5 ~]# openssl s_client -connect <SMTP-Relay-Server>:25 -starttls smtp

Bei GMX.net erhalten Sie die folgende Ausgabe.

[root@centos5 ~]# openssl s_client -connect mail.gmx.net:25 -starttls smtp
CONNECTED(00000003)
depth=1 /C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Premium Server CA/emailAddress=premium-server@thawte.com
verify return:1
depth=0 /C=DE/ST=Bayern/L=Munich/O=GMX GmbH/CN=mail.gmx.net
verify return:1
---
Certificate chain
 0 s:/C=DE/ST=Bayern/L=Munich/O=GMX GmbH/CN=mail.gmx.net
   i:/C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Premium Server CA/emailAddress=premium-server@thawte.com
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDVDCCAr2gAwIBAgIQBr3Y7zthQknDGkxe4a9sljANBgkqhkiG9w0BAQUFADCB
zjELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJ
Q2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UE
CxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhh
d3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNl
cnZlckB0aGF3dGUuY29tMB4XDTA4MTExMDE0MTMxOVoXDTA5MTExNzE0MTI1MFow
WTELMAkGA1UEBhMCREUxDzANBgNVBAgTBkJheWVybjEPMA0GA1UEBxMGTXVuaWNo
MREwDwYDVQQKEwhHTVggR21iSDEVMBMGA1UEAxMMbWFpbC5nbXgubmV0MIGfMA0G
CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDVe6sv7d9B4PRCrWVPwvxi/2/Wk9GUhGmC
cSpGK0/tnDa2F8Ro7R1+LeERFXgVPbWPA3KbbNSxDK5pK1E42in4jpdeaj0OC9vE
BrpX5iQuqdW4aUjdZ4zBX0mwf4xmBtmcrZwUGN36tV/XEyVl++0WQkSjM1/feWCo
a2M0C9ksswIDAQABo4GmMIGjMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD
AjBABgNVHR8EOTA3MDWgM6Axhi9odHRwOi8vY3JsLnRoYXd0ZS5jb20vVGhhd3Rl
UHJlbWl1bVNlcnZlckNBLmNybDAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGG
Fmh0dHA6Ly9vY3NwLnRoYXd0ZS5jb20wDAYDVR0TAQH/BAIwADANBgkqhkiG9w0B
AQUFAAOBgQCODRHInyBefyodxnOPJ7x52/E/E0SWVyckf0HKQmdHc/gy9uUvJoAq
yCH58i0f7qdf1247NROouv7EEZCH6gJRM3qB/AlsgmVJd8rOd9+I70qvRkBeqXk/
ja4yHmmLPTewKw/31nRIg0iE58vDbQSMpC7Na+gQ0ousLNNU48sXKw==
-----END CERTIFICATE-----
subject=/C=DE/ST=Bayern/L=Munich/O=GMX GmbH/CN=mail.gmx.net
issuer=/C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Premium Server CA/emailAddress=premium-server@thawte.com
---
No client certificate CA names sent
---
SSL handshake has read 1649 bytes and written 351 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 1024 bit
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : DHE-RSA-AES256-SHA
    Session-ID: 4604673EC3964193F04AB9876639CB8426AF178756EF513DCADBCF66AC3C6F81
    Session-ID-ctx:
    Master-Key: 64667226802D820356A67FF8BB7C35D080A986F1EA37046D7DD53320422660F863826D7DE7A54B2BE7814D579EB75FF5
    Key-Arg   : None
    Krb5 Principal: None
    Start Time: 1251352883
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
250 STARTTLS

Wie Sie der Ausgabe entnehmen können, wurde das Zertifikat von der Zertifizierungsstelle Thawte herausgegeben.

Die Abfrage des Zertifikates von Web.de liefert die folgende Ausgabe zurück.

[root@centos5 ~]# openssl s_client -connect smtp.web.de:25 -starttls smtp
CONNECTED(00000003)
depth=1 /C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Premium Server CA/emailAddress=premium-server@thawte.com
verify return:1
depth=0 /C=DE/ST=Baden-Wuerttemberg/L=Karlsruhe/O=WEB.DE GmbH/CN=smtp.web.de
verify return:1
---
Certificate chain
 0 s:/C=DE/ST=Baden-Wuerttemberg/L=Karlsruhe/O=WEB.DE GmbH/CN=smtp.web.de
   i:/C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Premium Server CA/emailAddress=premium-server@thawte.com
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDZTCCAs6gAwIBAgIQMsHfXMF+j+KN9k2kPYpzyjANBgkqhkiG9w0BAQUFADCB
zjELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJ
Q2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UE
CxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhh
d3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNl
cnZlckB0aGF3dGUuY29tMB4XDTA5MDEzMDEzMTMwMloXDTEwMDIwNjE0NTE1MFow
ajELMAkGA1UEBhMCREUxGzAZBgNVBAgTEkJhZGVuLVd1ZXJ0dGVtYmVyZzESMBAG
A1UEBxMJS2FybHNydWhlMRQwEgYDVQQKEwtXRUIuREUgR21iSDEUMBIGA1UEAxML
c210cC53ZWIuZGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAN3gTpL4FiIp
7G3KTZwHkAlXpHhvyueBIpsAV5qSSNkKvSAOu2UzYLJVc5NjSUWgYz/55Qm2mZc0
eFYV2d2eIPWmLPycYJu18si8W4CehEqlKsT/BnJIFGEUTr/HstYWRlILVm8L5vUJ
3a3uaIL5MZ8T1oXjqQ/w8FzJCv2ft0UHAgMBAAGjgaYwgaMwHQYDVR0lBBYwFAYI
KwYBBQUHAwEGCCsGAQUFBwMCMEAGA1UdHwQ5MDcwNaAzoDGGL2h0dHA6Ly9jcmwu
dGhhd3RlLmNvbS9UaGF3dGVQcmVtaXVtU2VydmVyQ0EuY3JsMDIGCCsGAQUFBwEB
BCYwJDAiBggrBgEFBQcwAYYWaHR0cDovL29jc3AudGhhd3RlLmNvbTAMBgNVHRMB
Af8EAjAAMA0GCSqGSIb3DQEBBQUAA4GBAHhA4LXQihYNvPKxAuqY1QDJXjeNQgoP
VuRH63QbzBhvja/2OLz88sbQIIijPqnYc608NHdLiq2euVgjbu8vNiP3LrCkhN5k
V0ivEW95LDiTjthMf4wk9DbptTGIsZzPlLOY5vTYxGv1euXOKtcacTWshIo7F+I2
M2XO1E4X8U3R
-----END CERTIFICATE-----
subject=/C=DE/ST=Baden-Wuerttemberg/L=Karlsruhe/O=WEB.DE GmbH/CN=smtp.web.de
issuer=/C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Premium Server CA/emailAddress=premium-server@thawte.com
---
No client certificate CA names sent
---
SSL handshake has read 1281 bytes and written 351 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA
Server public key is 1024 bit
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : AES256-SHA
    Session-ID: 77D1D6FA4A8DD80929C5E16A8A514988F13D00A78E96D175D29287FF27EE9756
    Session-ID-ctx:
    Master-Key: 18E6BE876B87BDFE75F4FBDF7FCDD1E0F58FF1A027AA851252055B38A213B3C41EFC0DB6AB121422B925E8C610C7E174
    Key-Arg   : None
    Krb5 Principal: None
    Start Time: 1251352667
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
250 HELP

Wie Sie sehen, wurde auch dieses Zertifikat von Thawte herausgegeben. Wenn Sie weitere SMTP-Relay-Server verwenden, müssen Sie diesen Schritt für jeden Server wiederholen.

Wenn Sie alle Zertifizierungsstellen der verwendeten Smarthosts herausgefunden haben, müssen Sie sich die Root-Zertifikate der einzelnen Zertifizierungsstellen herunterladen. Da GMX.net und Web.de Zertifikate von Thawte verwenden, müssen Sie nur dieses Root-Zertifikat herunterladen.

[root@centos5 ~]# wget https://www.verisign.com/support/thawte-roots.zip

Erstellen Sie anschließend ein temporäres Verzeichnis in welches Sie die Root-Zertifikate entpacken.

[root@centos5 ~]# mkdir ~/temp
[root@centos5 ~]# unzip thawte-roots.zip -d ~/temp

In dem heruntergeladenen Archiv befindet sich die Datei Thawte Premium Server CA.pem, deren Inhalt Sie einfach an die Datei /etc/postfix/cacert.pem anhängen. Danach können Sie das temporäres Verzeichnis und die Datei thawte-roots.zip wieder löschen.

[root@centos5 ~]# cat ~/temp/Thawte\ SSLWeb\ Server\ Roots/thawte\ Premium\ Server\ CA/Thawte\ Premium\ Server\ CA.pem >> /etc/postfix/cacert.pem

Anschließend müssen Sie Postfix mitteilen, wo die CA-Schlüssel zu finden sind.

[root@centos5 ~]# postconf -e 'smtp_tls_CAfile = /etc/postfix/cacert.pem'

Jetzt müssen Sie nur noch die Postfix-Konfiguration neu laden.

[root@centos5 ~]# service postfix reload

Von jetzt an, sollten beim Mail-Versand an einen Smarthost nur noch die folgenden Einträge in der Logdatei /var/log/maillog protokolliert werden.

[root@centos5 ~]# tail -f /var/log/maillog
[...]
Aug 27 16:30:53 centos5 postfix/pickup[16313]: 3ACAB1C9A7D: uid=500 from=<georg>
Aug 27 16:30:53 centos5 postfix/cleanup[16321]: 3ACAB1C9A7D: message-id=<20090827143053.3ACAB1C9A7D@centos5.home.lan>
Aug 27 16:30:53 centos5 postfix/qmgr[16314]: 3ACAB1C9A7D: from=<email-adresse@gmx.net>, size=331, nrcpt=1 (queue active)
Aug 27 16:30:54 centos5 postfix/smtp[16323]: 3ACAB1C9A7D: to=<empfaenger@domain.de>, relay=mail.gmx.net[213.165.64.20]:25, delay=1.5, delays=0.07/0.1/0.76/0.59, dsn=2.6.0, status=sent (250 2.6.0 Message accepted {mp011})
Aug 27 16:30:54 centos5 postfix/qmgr[16314]: 3ACAB1C9A7D: removed
[...]
Aug 27 16:32:53 centos5 postfix/pickup[16313]: 5B3731C9A7D: uid=504 from=<hans>
Aug 27 16:32:53 centos5 postfix/cleanup[16355]: 5B3731C9A7D: message-id=<20090827143253.5B3731C9A7D@centos5.home.lan>
Aug 27 16:32:53 centos5 postfix/qmgr[16314]: 5B3731C9A7D: from=<email-adresse@web.de>, size=326, nrcpt=1 (queue active)
Aug 27 16:32:54 centos5 postfix/smtp[16357]: 5B3731C9A7D: to=<empfaenger@domain.de>, relay=smtp.web.de[217.72.192.157]:25, delay=0.92, delays=0.06/0.05/0.52/0.29, dsn=2.0.0, status=sent (250 OK id=1MgYMr-0000FJ-00)
Aug 27 16:32:54 centos5 postfix/qmgr[16314]: 5B3731C9A7D: removed


Dieser Eintrag wurde am 27.08.2009 erstellt und zuletzt am 24.01.2016 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_33_738.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer