BSD-Wiki

Mitschrift einer FreeBSD-Installation

Benutzer-Werkzeuge

Webseiten-Werkzeuge


mailserver_auf_opensmtpd

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

mailserver_auf_opensmtpd [2014/02/10 21:21]
rakor
mailserver_auf_opensmtpd [2017/10/02 13:40]
Zeile 1: Zeile 1:
-====== Allgemein ====== 
-Bei **OpenSMTPd** handelt es sich um einen Mailserver der vom //​OpenBSD-Team//​ entwickelt wird um einen robusten, sicheren Mailserver anzubieten der sich durch eine einfache und verständliche Konfiguration auszeichnet. Somit ist es recht schnell möglich einen Mailserver für die meisten Aufgabengebiete zu konfigurieren. Die Einfachheit geht zu Lasten der Vielfältigkeit. Besteht der Bedarf an speziellen Lösungen die über die Basisfunktionalität herausgeht muss man sich mit den komplexeren Konfigurationen von den großen Mailservern auseinandersetzen (z.B. [[Postfix]],​ exim, sendmail, etc.). 
- 
-**OpenSMTPd** wird aktuell sehr aktiv entwickelt und es können sich noch recht kurzfristig Änderungen ergeben. 
- 
-====== Installation ====== 
-Zur Installation von **OpenSMTPd** mit Hilfe von Portmaster wird wie folgt vorgegangen:​ 
-<​code>​ 
-# portmaster mail/​opensmtpd 
-</​code>​ 
- 
-Hinweis: 
- 
-Wenngleich der Port sich //​opensmtpd//​ nennt so sind alle installierten Dateien und Konfigurationsvariablen nur noch mit //smtpd// benannt, was ggf etwas unübersichtlich sein könnte. 
- 
-====== Konfiguration ====== 
-Nachdem der Mailserver installiert ist geht es darum ihn zu Konfigurieren bevor er in Betrieb geht. 
- 
-**Hinweis:​** Der **Hostname** des Systems (in der Variable //​hostname//​ in der ///​etc/​rc.conf//​ **muss** ein FQHN - bestehend aus Hostname und Domain - sein, sonst startet smtpd nicht). 
- 
-===== Zertifikate erstellen ===== 
-Um verschlüsselte Verbindungen auf dem Mailserver zuzulassen ist ein SSL-Zertifikat notwendig. Dieses kann entweder selbst signiert sein (was in einigen Mailprogrammen zu Fehlermeldungen führt) oder durch eine offizielle CA signiert sein (was im Allgemeinen jedoch etwas kostspielig ist). 
- 
-Das Erzeugen von Zertifikaten ist nicht notwendig wenn man lediglich einen lokalen Mailserver installieren will der nicht nach außen hier erreichbar ist. In allen anderen Fällen ist es dringend zu empfehlen eine verschlüsselte Verbindung zu verwenden wenn sich Benutzer hierüber auf dem System anmelden (z.B. um den Server als //​Postausgangsserver//​ für ihren Mailclient zu verwenden) da hierbei deren Passwort im Klartext übertragen wird! Bei verschlüsselten Verbindungen ist dies ebenfalls der Fall, jedoch innerhalb des verschlüsselten Kanals. 
-Soll der Server in der Lage sein Mails direkt zu empfangen (indem man eine Mail an //​benutzername@mailserver//​ richtet sollte Port 25 keine Verschlüsselung fordern - jedoch darf er sie anbieten), da nicht jeder Mailserver der ggf. diese Mail zustellen will dies unterstützt. Mailversand an sich ist nun einmal ein unverschlüsseltes und somit unsicheres Medium (siehe [[GnuPG]]). 
- 
-Der im Beispiel verwendete Domainname //​mail.example.com//​ muss entsprechend des Domainnamens des Systems angepasst werden. 
- 
-Zunächst wird ein Verzeichnis angelegt um die Zertifikate darin zu speichern. 
-<​code>​ 
-# mkdir /​usr/​local/​etc/​mail/​certs 
-</​code>​ 
- 
-Anschließend wird der Schlüssel erzeugt mit welcher zur Verschlüsselung genutzt wird. 
-<​code>​ 
-# openssl genrsa -out /​usr/​local/​etc/​mail/​certs/​mail.example.com.key 4096  
-</​code>​ 
- 
-Anschließend wird das selbst signierte Zertifikat erstellt. Soll das Zertifikat von einer offiziellen CA unterzeichnet werden.... 
-<​code>​ 
-# openssl req -new -x509 -key /​usr/​local/​etc/​mail/​certs/​mail.example.com.key -out /​usr/​local/​etc/​mail/​certs/​mail.example.com.crt -days 365  
-# chmod 600 /​usr/​local/​etc/​mail/​certs/​mail.example.com.* 
-</​code>​ 
- 
-===== smtpd.conf ===== 
-**Hinweis:​** Um lediglich lokale Mails des Systems zu verarbeiten genügt die Standardkonfiguration wie sie in **/​usr/​local/​etc/​mail/​smtpd.conf.sample** vorgegeben wird. In diesem Fall muss die Datei lediglich nach **/​usr/​local/​etc/​mail/​smtpd.conf** kopiert werden. 
- 
-Für den Fall eines echten Mailservers der Mails von außen empfangen, und nach außen senden kann, ist eine weiter angepasste **/​usr/​local/​etc/​mail/​smtpd.conf** notwendig. Die folgende Konfigurationsdatei entspricht folgenden Voraussetzungen. 
-Der Mailserver: 
-    * lauscht nach außen an der Netzwerkkarte **re0** für einkommende Mails auf **Port 25** (SMTP) und bietet auch verschlüsselte Verbindungen an. 
-    * lauscht nach außen an der Netzwerkkarte **re0** für einkommende Mails (auch zum relay!) auf **Port 465** (SMTPS) und verlangt eine Benutzeranmeldung über verschlüsselte Verbindungen. 
-    * nutzt die Systemalias-Tabelle **/​etc/​mail/​aliases** 
-    * empfängt für alle Domainnamen die in der Datei **/​etc/​mail/​domains** aufgeführt sind 
-    * empfängt Mails an die virtuellen Benutzer (virtuellen Mailadressen) die in der Datei **/​etc/​mail/​vusers** zugeordnet sind. 
-    * speichert alle Mails in die Benutzerordner im **Maildir**-Format. 
-    * stellt lokale Mails direkt zu (ebenfalls in das Maildir des Benutzers). 
-    * erlaubt das **Relay** von Mails (Senden nach außen) an andere Server für alle **lokalen Benutzer** (als lokale Benutzer zählen auch Verbindungen die per **smtp-auth** aufgebaut wurden - hier über SMTPS auf **Port 465**). 
- 
-<file bash smtpd.conf>​ 
-# Zuerst werden Zertifikat und Schluessel festgelegt 
-pki mail.example.com certificate "/​usr/​local/​etc/​mail/​certs/​mail.example.com.crt"​ 
-pki mail.example.com key "/​usr/​local/​etc/​mail/​certs/​mail.example.com.key"​ 
- 
-# Um nur lokale Mails zuzustellen kann der smtpd an localhost lauschen 
-#    listen on localhost 
-# 
-# Um Mails von aussen zu empfangen wir an Port 25 gelauscht und verschluesselte Verbindungen angeboten 
-listen on re0 port 25 tls pki mail.example.com 
-# Um den Server als Relay nutzen zu koennen muessen sich Benutzer per smtps verbinden und anmelden 
-listen on re0 smtps pki mail.example.com auth 
- 
-# Tabellen setzen 
-# Die System-Alias-Tabelle 
-table aliases file:/​etc/​mail/​aliases 
-# Tabelle der Domains fuer welche Mails angenommen werden sollen 
-table domains file:/​etc/​mail/​domains 
-# Tabelle der virtuellen Nutzer. Mapping von virtuellen Mailadressen auf Systembenutzer 
-table vusers ​ file:/​etc/​mail/​vusers 
- 
-# Alles was lokal ist wird direkt zugestellt 
-accept from local for local alias <​aliases>​ deliver to maildir 
-accept from local for local deliver to maildir 
- 
-# Empfangene Mails in die Maildirverzeichnisse der Benutzer zustellen: 
-# Im einfachsten Fall koennen einfach alle Mails an die Benutzer des Systems angenommen und zugestellt werden. 
-#    accept from any for domain mail.example.com deliver to maildir 
- 
-# Alle Mails von aussen akzeptieren wenn sie zu den akzeptierten domains und virtuellen usern gehoert 
-accept from any for domain <​domains>​ virtual <​vusers>​ deliver to maildir 
- 
-# Angemeldete Benutzer (die sich per smtps gegen ihre lokalen Benutzerdaten authentifizieren) duerfen Relay nutzen 
-accept for any relay 
-</​file>​ 
-Hinweis: Das Lauschen an //​localhost//​ führte (in Version 5.4.1,1 ) in einer Jail hinter einer IPFW-Firewall zu einem Fehler der das Starten des Servers verhindert. Wird statt //​localhost//​ die Adresse //0.0.0.0// eingetragen konnte der Fehler umgangen werden. 
- 
-===== Aliases des Systems verwenden ===== 
-Um die bereits vorhandenen //aliases// des Systems auch mit **OpenSMTPd** zu nutzen wurden sie in der ///​usr/​local/​etc/​mail/​smtpd.conf//​ für die Tabelle **aliases** eingetragen. Die Datei kann wenn nötig noch angepasst werden (z.B. [[Mails an root umleiten]]). 
- 
-===== Akzeptierte Domains ===== 
-Um Mails für verschiedene Domainnamen als Empfänger zu akzeptieren wird eine Tabelle angelegt. Diese Tabelle wird als Datei unter ///​etc/​mail/​domains//​ erzeugt und als Tabelle **domains** in der ///​usr/​local/​etc/​mail/​smtpd.conf//​ verbunden. Um als Mailserver (zum Mailempfang) von verschiedenen Domains zu fungieren werden die Domains zeilenweise hinzugefügt. 
-<​code>​ 
-example.com 
-anotherexample.net 
-andathirdexample.org 
-</​code>​ 
- 
-===== Virtuelle User ===== 
-Mit virtuellen Usern können Mails auch für Mailadressen angenommen werden für die es keinen echten Benutzer auf dem System gibt. Die Tabelle wird in der ///​usr/​local/​etc/​mail/​smtpd.conf//​ als **vusers** hinzugefügt'''​. 
-Um virtuelle User anzulegen wird eine weitere Alias-Tabelle angelegt. Die Datei wird ebenfalls unter ///​etc/​mail/​vusers//​ angelegt und kann z.B. wie folgt aussehen: 
-<​code>​ 
-# Mails die an einen Benutzer '​sepp'​ (den es nicht als Systembenutzer gibt) geschickt werden, 
-# werden an den Systembenutzer '​fritz'​ zustellen. ​ 
-sepp fritz 
- 
-# Mails die an egon@anotherexample.com gesendet werden, werden dem Systembenutzer fritz zugestellt 
-# anotherdomain.net muss dabei der Domain-Tabelle hinzugeuegt sein. 
-egon@anotherexample.net fritz 
- 
-# Alle Mails an die Domain athirdexample.org werden an den Systembenutzer '​franz'​ zugestellt 
-# auch hier muss athirdexample.org in der Domain-Tabelle aufgefuehrt sein. 
-@andathirdexample.org franz 
-</​code>​ 
- 
-====== Aktivieren ====== 
-<​code>​ 
-sendmail_enable="​NO"​ 
-sendmail_submit_enable="​NO"​ 
-sendmail_outbound_enable="​NO"​ 
-sendmail_msp_queue_enable="​NO"​ 
-smtpd_enable="​YES"​ 
-</​code>​ 
  
mailserver_auf_opensmtpd.txt · Zuletzt geändert: 2017/10/02 13:40 (Externe Bearbeitung)

Impressum