Content
Nachrichten mittels SSMTP an einen Smarthost senden
Konfiguration des Mailpaketes um Nachrichten mittels SSMTP an einen Smarthost zu senden
Benötigte Pakete:
- mail (ab v1.10.2),
- stunnel (ab v1.0.0)
Um generell alle Nachrichten über eine TLS-gesicherte Verbindung an einen externen Smarthost
zu senden, wird üblicherweise eine unverschlüsselte Verbindung über Port 25/tcp aufgebaut und
dann der SMTP-Befehl 'STARTTLS' abgesetzt welcher den SMTP-Server anweist eine sichere Verbindung
aufzubauen.
Will man jedoch Nachrichten über das seit langem überholte SSMTP-Protokolls (SMTP over SSL) an
einen externen Smarthost senden, so muss man zusätzlich das stunnel-Paket installieren, da das
Mailpaket dieses altmodische Protokoll für ausgehende Verbindungen nicht mehr unterstützt.
Beispiel: Sendender Server: send-server.domain.com
Empfangender Server: receive-server.domain.com, Port 465/tcp
1. Als erstes stellt man sicher, dass auf dem empfangenden Server (receive-server.domain.com)
eingehende SSMTP-Verbindungen akzeptiert werden. Falls es sich bei dem Server um einen
eisfair-Server handelt auf welchem das Mailpaket installiert ist, so sind zusätzlich folgende
Parameter in der mail-Konfiguration zu setzen:
SMTP_SERVER_SSMTP='yes'
SMTP_SERVER_SSMTP_LISTEN_PORT='ssmtp'
2. Anschließend installiert man auf dem sendenden Server (send-server.domain.de) das stunnel-Paket
und konfiguriert eine Verbindung zum empfangenden Server. Hierbei wird festgelegt, dass eine
eingehende Verbindung auf dem lokalen Port 4465/tcp (localhost) an den entfernten Rechner
'receive-server.domain.com', auf Port 465/tcp weitergeleitet werden soll:
START_STUNNEL='yes'
STUNNEL_DEFAULT_PROTOCOL='ssl3'
STUNNEL_N='1'
STUNNEL_1_ACTIVE='yes'
STUNNEL_1_NAME='SSMTP-Listener'
STUNNEL_1_CLIENT_MODE='yes'
STUNNEL_1_CLIENT_DELAYED_DNS='no'
STUNNEL_1_CLIENT_LISTEN_HOST='4465'
STUNNEL_1_CLIENT_REMOTE_HOST='receive-server.domain.de:465'
STUNNEL_1_SERVER_MODE='no'
STUNNEL_1_CERT_CHECK='0'
3. Um die Konfiguration zu testen kann man auf dem sendenden Server mittels des telnet-Befehl
einen Test durchführen:
# telnet localhost 4465
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 receive-server.domain.de ESMTP Exim 4.72 Tue, 07 Dec 2010 21:02:56 +0100
Gibt man bei aufgebauter Verbindung z.B. den Befehl 'EHLO send-server.domain.de'
ein so werden die verfügbaren SMTP-Befehle angezeigt:
250-receive-server.domain.de Hello localhost [127.0.0.1]
250-SIZE 52428800
250-PIPELINING
250-AUTH PLAIN LOGIN CRAM-MD5
250-STARTTLS
250 HELP
Um die Verbindung zu beenden gibt man abschließend den folgenden Befehl ein:
'QUIT'
221 receive-server.domain.de closing connection
Connection closed by foreign host.
4. Abschließend passt man noch die Smarthost-Konfiguration des mail-Paketes dahingehend
an, dass eine unverschlüsselte, ausgehende Verbindung auf den lokalen Port 4465/tcp
verweist:
SMTP_SMARTHOST_N='1'
SMTP_SMARTHOST_1_HOST='localhost'
SMTP_SMARTHOST_1_AUTH_TYPE='plain'
SMTP_SMARTHOST_1_ADDR='*'
SMTP_SMARTHOST_1_DOMAIN='*'
SMTP_SMARTHOST_1_USER='user'
SMTP_SMARTHOST_1_PASS='pass'
SMTP_SMARTHOST_1_FORCE_AUTH='yes'
SMTP_SMARTHOST_1_FORCE_TLS='no'
SMTP_SMARTHOST_1_PORT='4465'
17.04.2011/Jürgen Edner (juergen(at)eisfair(dot)org)