Wie richte ich einen E-Mail-Server ein?

59

Mein VPS läuft unter Ubuntu und ich möchte E-Mails an meine Domain erhalten.

Wie richte ich dazu einfach einen Mailserver ein?

Stefano Palazzo
quelle
3
Tolle Frage, ich warte auf eine tolle Antwort. Ich habe im Laufe der Jahre ein paar Mailserver aufgebaut und es war noch nie so einfach. Viele Entscheidungen: Welcher SMS-Server, welcher IMAP / POP, wie die Mails gespeichert werden, wie die Benutzer gespeichert werden ... Ich bin absolut nicht in der Lage, eine einfache Antwort zu geben .
Javier Rivera

Antworten:

48

So habe ich Mail auf unseren Produktionsmaschinen eingerichtet. Dies sind die Kriterien, die wir brauchten:

  • E-mail Konten
  • E-Mail-Aliase (Weiterleitungen)
  • IMAP, POP3 und SMTP

"Easy" (tl; dr)

Zunächst möchte ich auf die scheinbar einfachste Lösung eingehen .

sudo tasksel install mail-server

Als wir dies versuchten, traten einige Probleme auf: Zuerst wird Dovecot installiert, was für die meisten in Ordnung ist, aber wir haben Courier für unsere Bedürfnisse als das bessere der beiden angesehen . Zweitens nutzt es Postfix, was großartig ist, aber wir brauchen auch Exim, da es ein leistungsfähigerer MTA / SMTP-Server ist. Drittens installiert es MySQL - in der von mir verwendeten Konfiguration bevorzugen wir Flatfiles für die Konfiguration, da dies eine Schwachstelle weniger ist. Überlegen Sie, was passieren würde, wenn MySQL aus einem unbekannten Grund abstürzt. Ansonsten ist der Rest der Pakete ziemlich einfach und für einen kleinen Mail-Service einfach zu warten (man denke an 1-2 E-Mail-Domains insgesamt).

Unsere Konfiguration

Verzeichnisaufbau

Wir weichen geringfügig vom Pfad normaler Konfigurationen ab, dies erleichtert jedoch die Verwaltung.

Alle unserer Mail wird in gespeichert /var/mail/virtual/<domain>/<user>/mailfür zukünftige Beispiele Also ich verwenden werden [email protected], [email protected], [email protected]um zu gehen , um eine E - Mail - Adresse, eine Weiterleitung zu vertreten [email protected], und jeweils eine schlechte Adresse. Im obigen Beispiel wäre es /var/mail/virtual/example.com/email/mail.

Ich habe auch eine Liste aller Domains auf dem Server, /etc/valiasesaber dazu später mehr.

Postfix

Dies ist mehr oder weniger der einfache Teil des Setups. Installieren Sie einfach das postfixPaket.

Exim

Exim apt-get install exim4 exim4-base exim4-config exim4-daemon-heavyinstallieren mit Nach der Installation müssen Sie die Exim-Standardkonfiguration bearbeiten, um die folgenden Werte zu ersetzen oder hinzuzufügen:

domainlist local_domains = @:localhost:dsearch;/etc/valiases:dsearch;/var/mail/virtual
daemon_smtp_ports = smtp : 587 : 465
MAIN_TLS_ENABLE = yes

(Diese Zeilen erscheinen in verschiedenen Teilen der Datei und werden entsprechend ersetzt.)

Sobald dies abgeschlossen ist, erstellen Sie die Exim-Konfiguration mit update-exim4.confDies schließt die für Exim erforderlichen Änderungen ab

Kurier

Installieren Sie Courier mit courier-basedieser sollte installieren courier-authdaemon, courier-authlib*, courier-imap*, courier-pop*, courieruserinfo,courier-ssl

Es gibt ehrlich gesagt nicht viel Konfiguration außerhalb des Standards. Sie müssen lediglich eine Benutzerdatenbank erstellen.

Konten

Exim und Courier überprüfen an einigen Stellen, ob ein Login oder eine eingehende E-Mail gültig sind. Exim prüft, ob die Domain als lokaler Hostname aufgeführt ist oder ob die Domain eingetragen ist /var/mail/virtualoder ob die Domain eingetragen ist /etc/valiases.

E-Mail-Konten erstellen

Ich habe schließlich mehrere Tools erstellt, um diesen Prozess zu rationalisieren. Das Hinzufügen eines neuen Benutzers erfolgt jedoch wie folgt:

mkdir -p /var/mail/virtual/example.com/email
chown -R mail.mail /var/mail/virtual/example.com/
maildirmake /var/mail/virtual/example.com/email/mail
chown -R mail.mail /var/mail/virtual/example.com/

Fügen Sie dann die Adresse zu "courier userdb" hinzu, damit sie sich anmelden können

userdb [email protected] set uid=8 gid=8 home=/var/mail/virtual/example.com/email mail=/var/mail/virtual/example.com/email/mail

Stellen Sie sicher, dass Sie die Werte gegebenenfalls ersetzen. Außerdem - uidund gid müssen die numerischen Benutzer- / Gruppen-IDs für den E-Mail-Benutzer sein.

userdbpw -md5 | userdb [email protected] set systempw

Daraufhin werden Sie zur Eingabe eines Kennworts aufgefordert. Geben Sie das Kennwort ein, das Sie für das Konto verwenden möchten.

makeuserdb

Generieren Sie abschließend die Userdb-Hash- / Shadow-Dateien. Starten Sie Courier neu und testen Sie, ob Ihre Änderungen funktionieren:

authtest [email protected]

Sollte etwas ähnliches produzieren

Authentication succeeded.

     Authenticated: [email protected]  (uid 8, gid 8)
    Home Directory: /var/mail/virtual/example.com/email
           Maildir: /var/mail/virtual/example.com/email/mail
             Quota: (none)
Encrypted Password: $1$LOLCATS$THISWILLBEAHASH.
Cleartext Password: (none)
           Options: (none)

Wenn "Authentifizierung fehlgeschlagen: Vorgang nicht zulässig" angezeigt wird, bearbeiten Sie stattdessen / etc / courier / authdaemonrc und fügen Sie authuserdb in die Zeile authmodulelist ein.

Nachdem alle Tests bestätigt wurden, starten Sie die verschiedenen beteiligten Dienste neu ( courier-authdaemon, exim4), öffnen Sie die Ports 143, 25, 586, 495, 110 und richten Sie die Konten in Ihrem bevorzugten E-Mail-Client ein.

E-Mail-Aliase erstellen

Für jede Domain sollten Sie eine Datei in /etc/valiases(erstellen, wenn es nicht existiert) mit mindestens der folgenden Zeile erstellen:

*: :fail: No user at this address.

Was dies sagt: Wenn die eingehende E-Mail nicht mit einem E-Mail-Konto übereinstimmt, das ich gespeichert habe, sollte die E-Mail fehlschlagen und mit der Meldung "Kein Benutzer an dieser Adresse" zurückgewiesen werden. Alle Mails, die gesendet werden, um zu sagen [email protected], werden als Fehler zurückgewiesen.

Wir haben jedoch ein paar E-Mail-Adressen, die wir an anderer Stelle pflegen möchten - beispielsweise bei [email protected] -, damit wir sie erstellen können. /etc/valiases/example.comDer Inhalt der Datei sollte wie folgt lauten:

fwd: [email protected]
*: :fail: No user at this address.

Auf diese Weise stimmt [email protected] zwar mit keinem E-Mail-Konto auf dem Server überein, es stimmt jedoch mit der /etc/valiasesDatei überein, und die E-Mail wird an [email protected] weitergeleitet. [email protected] schlägt jedoch weiterhin mit fehl eine Meldung "Kein Benutzer an dieser Adresse".

Marco Ceppi
quelle
11
Kommt dies mit einer ISBN-Nummer?
Wesley
1
@WesleyDavid Ich glaube nicht, dass meine Bash-Geschichte als ISBN angezeigt wird :)
Marco Ceppi
Ich folge diesen Anweisungen - sehr geschätzt - und habe sie oben bearbeitet, um einen Fehler in der Authtest-Zeile zu beheben.
Darren Greaves
@ DarrenGreaves Danke! Ich bin froh, dass es geholfen hat und danke für das Update!
Marco Ceppi
Ich habe Mühe, all das zum Laufen zu bringen. Ich habe nur das Routing von Valiases zum Laufen gebracht, als ich die (für Pfade bearbeitete) Routing-Datei 350 von debian-administration.org/articles/140 hinzugefügt habe. Virtuelle Domains funktionieren überhaupt nicht - Mussten Sie überhaupt Routing-Dateien hinzufügen? Ta.
Darren Greaves
14

Der einfachste Weg ist zu rennen sudo tasksel install mail-server. Dadurch erhalten Sie einen E-Mail-Server mit vernünftigen Standardeinstellungen. Sie müssen nur ein paar Fragen beantworten. Natürlich können Sie danach noch manuelle Konfigurationen vornehmen, wenn dies erforderlich ist. In den meisten Fällen ist dies jedoch nicht der Fall. Folgen Sie einfach den Anweisungen auf dem Bildschirm und es sollte Ihnen gut gehen.

Es ist jedoch absolut empfehlenswert, sich über die Verwaltung der E-Mail-Dienste zu informieren.

Offizielle Referenzen:

Jo-Erlend Schinstad
quelle
Gibt es eine träge Möglichkeit zu sehen, was das zu tun hat (zu installierende Pakete, Standardeinstellungen)? Mit faul meine ich, ohne es selbst zu installieren.
Javier Rivera
@ Javier können Sie sehen, welche Inhalte installiert werden, indem Siesudo tasksel --task-packages mail-server
Marco Ceppi
Konfiguration in MySQL gespeichert, kein Anti-Spam, kein Anti-Virus ... es ist nicht wirklich nützlich für uns :(.
Javier Rivera
4

Wenn ich das nur selbst mache, brauchst du in der Tat Postfix, und in meinem Fall wollte ich auch einen Imap-Server, damit ich einen netten GUI-Client (ohne Namen zu erwähnen) auf einem anderen Computer verwenden kann. Ich habe diese Dokumente benutzt:

Postfix

Dovecot (Imap und Pop3)

Es ist eigentlich ziemlich einfach, hat es in ein paar Minuten zum Laufen gebracht und erhalte E-Mails. Dies ist auch nützlich, um zu überprüfen, ob alles in Ordnung ist .

Oh, und Sie müssen natürlich Ihre DNS-Einträge wie folgt korrekt einrichten (basierend auf den Einstellungen, die für mich funktionierten):

name   type   content
  @      A     ???.???.??.??    
mail     A     ???.???.??.??

und

         MX Records
Name                 Priority
mail.mydomain.com.      1
mail2.mydomain.com.     2

Beachten Sie den Punkt am Ende der Mailserver und geben Sie gegebenenfalls Ihre IP-Adresse und Ihren Domainnamen ein.

NimChimpsky
quelle