Startseite > RHCE > SMTP: Null-Client, ausgehendes Smarthost-Relay, Annahme eingehender Verbindungen

SMTP: Null-Client, ausgehendes Smarthost-Relay, Annahme eingehender Verbindungen

2012/02/03

Der Mail Transfer Agent postfix ist bereits in der Standardinstallation enthalten. Falls das aber nicht der Fall sein sollte lässt sich dieser durch Aufruf von

yum groupinstall "E-mail server"

nachinstallieren. Die Korrekte Funktion von DNS für den Betrieb eines Mail-Servers ist unbedingt vorher sicherzustellen! Da im folgenden Szenario keine „echte“ Domain zu Einsatz kommt sollte der Hostname sowie die Domain in /etc/hosts eingetragen werden:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 test test.example.com

Durch Aufruf von getent hosts wird die Datei /etc/hosts neu eingelesen. Da für die Namensauflösung lokale Dateien zuerst beachtet werden bevor eine DNS-Abfrage ausgesendet wird ist sichergestellt dass Test-Mails an die Domain example.com auch von unserem System entgegengenommen werden.

Null-Client

Ein Null-Client ist ein System, das e-Mails nur absenden, nicht jedoch empfangen oder weiterleiten kann. Diese Anforderung ist bereits nach der Installation von postfix erfüllt. Die Funktion lässt sich am Besten mit dem Werkzeug mail überprüfen:

yum install mailx

Nach Installation von mail wird testweise eine Mail versandt:

mail -s "Test Nachricht - SMTP Null-Client"
Dies ist eine Test-Nachricht von test.example.com.

Durch Drücken der Tasten [CTRL] + [D] weiss mail, dass die Eingabe des Nachrichtentexts beendet ist und versendet die e-Mail.

Es ist wichtig das SMTP-Protokoll zu verstehen um eine Fehlersuche oder einen Funktionstest effektiv durchführen zu können. Durch Installation des Telnet-Clients kann man sich direkt mit dem Mail Server unterhalten:

yum install telnet

Telnet öffnet im folgenden Beispiel eine Verbindung zum lokalen Host auf Port 25 (SMTP). Benutzereingaben sind fett dargestellt.

[root@test ~]# telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 test.example.com ESMTP Postfix
helo test.example.com
250 test.example.com
mail from: <root@example.com>
250 2.1.0 Ok
rcpt to: <meine.mailadresse@gmail.com>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Subject: Test-Nachricht
Dies ist eine Test-Nachricht von root auf test.example.com
.
250 2.0.0 Ok: queued as D117633F2
quit
221 2.0.0 Bye
Connection closed by foreign host.

Postfix hat hier die Nachricht akzeptiert und in die Warteschlange zum Versenden eingereiht. Ein Aufruf von mailq fragt den Status der Warteschlange ab – diese sollte jedoch bereits leer sein falls Verbindung zum Internet besteht und die DNS/Netzwerkkonfiguration in Ordnung ist.

Ausgehendes Smarthost-Relay

Um e-Mails von Clients aus dem lokalen Netz entgegenzunehmen und gegebenenfalls weiterzuleiten sind einige wenige Anpassungen in der Konfiguration notwendig. Gezeigt werden hier nur die notwendigen Änderungen in /etc/postfix/main.cf:

myhostname = test.example.com
myorigin = $mydomain
inet_interfaces = all
mynetworks = 192.168.100.0/24 127.0.0.0/8
#relay_host = [mailserver.isp.tld]   # Smarthost ISP

Gesetzt wird der Hostname, die Netzwerkschnittstellen auf denen postfix lauschen soll sowie das Netzwerk von dem aus Mails akzeptiert werden. $myorigin bestimmt, wie ausgehende Mails aussehen – im Beispiel würde nur die Domain an den Benutzernamen (user@example.com) angehängt, ohne Angabe dieses Parameters wird der volle Hostname (also z.B. user@test.example.com) des Servers angehängt. Die Angabe von mynetworks kann entfallen falls nur dem Subnetz vertraut werden soll in dem sich der Server befindet. Falls Mails nicht direkt an den Empfänger verschickt sondern über einen Smarthost (z.B. des Service Providers) laufen sollen ist der Eintrag von relay_host erforderlich. Nach Änderung der Konfiguration ist postfix neu zu starten bzw. die Konfiguration neu einzuladen:

service postfix reload   # Konfiguration neu einlesen
service postfix restart  # Service neu starten
service postfix check    # Konfiguration prüfen

Fehlermeldungen können unter

/var/log/maillog

nachgelesen werden. Die Ausführung von postconf -n zeigt geänderte Parameter in main.cf an.

Ausnahme in die Firewall hinzufügen

Die Firewall wird am einfachsten mit dem Werkzeug system-config-firewall-tui angepasst. Eine Installation erfolgt durch

yum install system-config-firewall-tui

Aufruf der Werkzeugs zur Firewallkonfiguration:

system-config-firewall-tui

–> Anpassen –> „Mail (SMTP)“ markieren –> Schließen

Nun kann der Versand einer Mail von einem Client aus versucht werden, Benutzereingaben sind wieder fett dargestellt:

user@client:~$ telnet 192.168.100.161 25
Trying 192.168.100.161...
Connected to 192.168.100.161.
Escape character is '^]'.
220 test.example.com ESMTP Postfix
helo client.example.com
250 test.example.com
mail from: <user@example.com>
250 2.1.0 Ok
rcpt to: <meine.mailadresse@gmail.com>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Subject: Test-Nachricht 
Dies ist eine Test-Nachricht von user auf client.example.com
.
250 2.0.0 Ok: queued as 24F7F23D6
quit
221 2.0.0 Bye
Connection closed by foreign host.

Die Mail wird nach erfolgreichem Versand höchstwahrscheinlich im Spam-Folder des Empfängers zu finden sein.

Annahme eingehender Verbindungen

Um Mails für Benutzer empfangen zu können müssen diese dem System bekannt sein. Im einfachsten Fall durch Erstellung lokaler Benutzer:

useradd -s /sbin/nologin bob
useradd -s /sbin/nologin alice

Durch Angabe des Parameters -s wird den angelegten Benutzern die Login-Shell /sbin/nologin zugewiesen, ein Login auf dem lokalen System ist nicht möglich. Eine Anpassung der Konfiguration von postfix in /etc/postfix/main.cf ist noch notwendig, um Mails für unsere Domain zu akzeptieren:

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

Wir versenden nun nach Neustart/Reload des Mail-Servers eine Mail von einem Client aus an alice@example.com.

telnet 192.168.100.161 25
Trying 192.168.100.161...
Connected to 192.168.100.161.
Escape character is '^]'.
220 test.example.com ESMTP Postfix
helo client.example.com
250 test.example.com
mail from: <user@example.com>
250 2.1.0 Ok
rcpt to: <alice@example.com>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Dies ist eine Test-Nachricht von user auf client.example.com
an alice@example.com
.
250 2.0.0 Ok: queued as 831203685
quit
221 2.0.0 Bye
Connection closed by foreign host.

Auf dem Mail-Server kann der Empfang der Mail nun kontrolliert werden:

cat /var/spool/mail/alice  # Mailbox von alice ansehen

Da eine Bereitstellung der Mails für Benutzer via POP oder IMAP nicht für das RHCE-Examen gefordert ist sind alle Anforderungen an die Funktion des Mail-Servers bereits erfüllt. In der Praxis wird man durch Installation von z.B. Dovecot diese Funktionen bereitstellen.

Advertisements
Kategorien:RHCE Schlagwörter: , , , , ,
%d Bloggern gefällt das: