Welche Ports wie für Mailserver

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Welche Ports wie für Mailserver

Beitrag von scientific » 10.10.2018 12:42:30

Hi Leute!

Ich habe mich jetzt schon sehr lange und intensiv mit Mailservern beschäftigt... aber manches blieb mir bisher dennoch unbeantwortet... :hail:

Um meine Frage überhaupt konkretisieren zu können, hat mich der Thread mit der Mailbrücke zum Drucker auf den richtigen Weg gebracht.

Prinzipiell Werden Mails per SMTP versendet. Das findet allgemein auf Port 25 statt. Dort lauscht(e) ein Server, der SMTP spricht und ohne Authentifizierung unverschlüsselt Emails entgegennimmt um damit dann etwas zu machen.

So war es gedacht in der Zeit, als alle Teilnehmer des Internets sich noch persönlich kannten und vertrauten.

Dann hat man den Port 587 ins Spiel gebracht, wo ein Server nur TLS-Veschlüsselt Emails entgegennimmt. Authentifizierung optional. TLS heißt, dass die Verbinung unverschlüsselt begonnen wird, und dann wechselt man auf eine ausgehandelte Verschlüsselung.
Es gibt auch noch den Port 465, der von Haus aus per SSL verschlüsselt spricht, der ist aber deprecatet und wird eigentlich längst anderweitig verwendet, aber viele Mailprovider und MUAs haben für SSL-Verschlüsselte Verbindung immer noch den als Default-Port... Für meine Überlegungen hab ich Port 465 daher einfach ausgespart, da er eben deprecated ist.

In den Anfängen des Internets war es so, dass HostA per SMTP (ich weiß, davor war noch uucp... usw.) auf Port 25 auf HostB ein Mail abgeliefert hat, und der Mailserver hat dieses dann als File in die Mailbox des entsprechenden Users gelegt. So geht es auch eigentlich heute noch.

Jeder Rechner, der Emails empfangen konnte, war ein Mailserver. Damit ich meine Emails lesen konnte, musste ich mich über meinen Unix-Login auf dem Rechner einloggen (per ssh oder ähnlichem) und konnte dann in meiner Mailbox stöbern.

Schön und gut, die Welt drehte sich weiter.

Heute habe ich meinen Mailaccount bei ProviderA, einen bei ProviderB und noch ein paar andere bei anderen Email-Providern (Arbeitgeber, Verein...). Wenn ich ein Email bekomme, dann verbindet sich ein Mailprogramm (MUA) mit dem Mailserver des Providers und liefert dort auf Port 25 das Email mittels SMTP ab.

Also ich schicke von Thunderbird ein Email an horst@providerA.example, dann verbindet sich Thunderbird mit dem Rechner (oder dem hinterlegten MX) providerA.example auf Port 25 und liefert dort das Email ab. Fertig.

Zwischenschritt. Ich hab auch einen Email-Account bei ProviderX und nutze dessen Mailserver als Smarthost.
Mein Thunderbird verbindet sich mit mail.ProviderX auf Port 25, kübelt das Email dort ab. Der Mailserver nimmt es, verbindet sich auf Port25 mit mail.ProviderA.example und kübelt mein Email dort rein.

Also die beiden Mailserver sprechen auf Port 25. Und damit mail.ProviderA auf mail.ProviderX (und umgekehrt) ein Mail abliefern kann, braucht es keine Authentifizierung, denn sonst müssten alle Mailserver alle Credentials aller Mailserver wissen...
Verschlüsselt kann es schon sein, damit sonst niemand den Verkehr mitschneiden kann.

Wenn ich meinen Mailserver nun einrichte, so muss ich Port 25 nach außen (also ins Internet) aufmachen und eine Prüfung auf Authentifizierung abdrehen. Ich kann erzwingen, dass nur Verschlüsselte Verbindungen akzeptiert werden. Und damit kann jeder bei mir ein Email einkippen, der meine Domain und den Port kennt. (Problemfeld SPAM)

Der lauschende Mailserver hat dann folgende Aufgaben:
Ein Mail, dass reinkommt muss geprüft werden, ob es einen lokalen User gibt, dem das Mail gehört, und wenn ja, dann leg es in sein Postfach.
Für mein Setup ist das aber zu wenig.
Ich habe meinen Mailserver nämlich so im Einsatz, dass der per fetchmail/getmail von all meinen Mailaccounts regelmäßig die Emails einsammelt und mir per IMAP dann zur Verfügung stellt.
Andererseits möchte ich per SMTP Emails verschicken. Das heißt, mein MUA nimmt den SMTP-Servre als Smarthost und von mir nimmt er Emails entgegen, die er dann an den Zielhost zustellt. Und um es noch komplexer zu machen, mein Mailserver wählt je nach gewählter Absenderadresse den entsprechenden Smarthost meiner Email-Provider aus, damit die Emails dann über diesen dem Ziel zugestellt werden. (Welcher Mailserver nimmt schon ein Mail mit gmx im from an, welches vom Server schiessmichtot.at versendet wird?)

Mein Setup klappte bisher ganz gut. Ich hatte nur den Teil der direkten Zustellung an meinen Mailserver bisher noch nicht implementiert, da ich rein über die Smarthosts gearbeitet habe.

Ich möchte aber mittelfristig von den großen Platzhirschen wie Google, GMX & Co loskommen und baue mir zu diesem Zwecke meine eigene Landschaft auf (daher auch der andere Thread zu DNS und openVPN) und meine Accounts dort löschen. Also brauche ich auch die direkte Zustellung an meinen Mailserver.

Zusammengefasst:
Ich hab am Mailserver Port 25 offen und lasse mir darauf von jedem unauthentifiziert Mails über TLS-Verschlüsselung zustellen. Diese Mails werden ausschließlich lokal zugestellt. Gibt es keinen entsprechenden Account lokal, wird das Mail rejected.
Ich hab am Mailserver Port 587 offen und lasse Emails nur von authentifizierten Accounts mit TLS-Verschlüsselung zu, welche dann entweder lokal zugestellt, oder direkt oder per Smarthost zum Empfänger weitergeleitet werden.

Die Kunst der Konfiguration liegt dann darin, dass Emails auf Port 25 am Rechner bleiben müssen (oder rejected werden) und jene von Port 587 weitergeleitet werden (oder lokal zugestellt).

Hab ich das so richtig verstanden?

Und während des Schreibens fiel mir dann auf, dass es wohl im Sinne der Security sinnvoll wäre, zwei Mailserver draus zu machen. Einmal den Einen, der nur auf Port 25 lauscht und meine Emails dann an den IMAP-Server weiterreicht (bzw. der meine User-Mailboxen hostet), und einmal einen Mailserver, der nur auf Port 587 lauscht und rein als mein eigener Smarthost dient. und die Emails dann zustellt oder an die zuständigen Smarthosts aller meiner Email-Provider weiterleitet, aber nicht lokal zustellt.
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

mludwig
Beiträge: 794
Registriert: 30.01.2005 19:35:04

Re: Welche Ports wie für Mailserver

Beitrag von mludwig » 10.10.2018 13:07:36

Vielleicht noch ein paar Hinweise, ich hatte auch den Eindruck in dem anderen Thread dass es nicht leicht zu verstehen/erklären ist:

Werden Mails ohne Anmeldung am Mailserver (egal welcher Port) abgeliefert, muss der Empfänger auf dem Server bekannt sein. In dem Fall ist Verschlüsselung meist optional, aber erwünscht. Der Absender interessiert hier nicht, es wird aber fast immer auf Spam geprüft und ob die Mail RFC-Konform ist. Graylisting gibt es auch noch, ist aber nach den RFCs in einer Grauzone ...

Werden Mails mit Anmeldung am Mailserver abgeliefert, wird inzwischen eigentlich immer Verschlüsselung verlangt. Wer nicht weiss warum hat Snowden verschlafen. Port ist auch hier egal (Port 25 kann auch Verschlüsseln). Dies dient dem Schutz der Anmeldedaten. Hier wird oft geprüft, ob die Absenderadresse zum Nutzernamen passt, Zieladresse ist egal. RFC-Konform sollte die Mail auch sein.

So wird es von den meisten Providern gehandhabt.

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: Welche Ports wie für Mailserver

Beitrag von ThorstenS » 10.10.2018 13:14:34

Im großen und ganzen hast du das richtig verstanden und auch die Historie schön niedergeschrieben. (uucp gibt es übrigens noch heute und ist für „roadwarriors” , die nicht immer online sind, noch immer eine Option. Ich empfehle dir aber nicht jetzt noch damit anzufangen).

Generell sprechen MUAs immer auf Port 587 mit dem Mailserver und die Mailserver untereinander auf Port 25. Dein Thunderbird sollte also auf 587 einliefern.

Geräte, die kein smtp-auth können, wie iLOs oder der esxi Benachrichtigungsdienst, sperre ich in ein Managementnetz und erlaube im Postfix per mynetworks die anonyme Zustellung auf Port 25 für einzelne Rechner oder Subnetze:

Code: Alles auswählen

mynetworks = 127.0.0.0/8 [::1]/128 192.168.x.y/32 192.168.z.0/24
mynetworks_style = subnet
Im DNS solltest du noch definieren. dass nur dein Mailserver mit der IP 11.22.33.44 berechtigt ist Mails für example.com zu versenden: (Stichwort SPF):

Code: Alles auswählen

$ dig txt example.com +short
"v=spf1 mx ip4:11.22.33.44 -all"
Debianpostgrey kann dir helfen die Spammer auszubremsen.

Ein mehrstufiges Mailsystem kann man machen, aber das verkompliziert das Aufsetzen und Debugging.

Ich würde dir empfehlen mal das kostenlose Proxmox Mail Gateway aufzusetzen und dir die configs anzuschauen - da kann man einiges bei lernen.

hec_tech
Beiträge: 1093
Registriert: 28.06.2007 21:49:36
Wohnort: Wien
Kontaktdaten:

Re: Welche Ports wie für Mailserver

Beitrag von hec_tech » 10.10.2018 13:19:18

Postgrey würde ich nicht mehr verwenden da gibt es bessere Sachen wie rspamd.

Ich will nicht jede Mail ausbremsen noch dazu lassen sich manche Mailserver mit dem 2. Zustellversuch oft sehr lange zeit.

rspamd ist mehr oder weniger ein Monster das die ganze Antispambekämpfung übernimmt. Dazu zählt auch Greylisting allerdings nur wenn der Score hoch genug ist.

SPF mit -all würde ich niemals verwenden - das schafft mehr Probleme als es bringt. Von SPF halte ich eigentlich nichts und auch Heinlein sagt man sollte ?all nehmen. Das einzige was hilft ist DKIM. Das kann man auch schön in rspamd integrieren.

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Welche Ports wie für Mailserver

Beitrag von scientific » 10.10.2018 13:23:55

Ich hab bei mir sowieso ausschließlich verschlüsselte Verbindungen zugelassen - vornweg gesagt.

So wie ich das SMTP-Protokoll verstanden habe, meldet sich ein User an. Dieser User darf dann verschiedene Absender-Adressen benutzen um in dieser einen Session verschiedene Mails abzuliefern.
Ich hab daher eine Prüfung eingebaut, welcher Login-User welche Absenderadresse verwenden darf.

Das ganze mit LDAP kombiniert ist nämlich gar nicht so easy...

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

wanne
Moderator
Beiträge: 7462
Registriert: 24.05.2010 12:39:42

Re: Welche Ports wie für Mailserver

Beitrag von wanne » 10.10.2018 14:53:50

Welcher Mailserver nimmt schon ein Mail mit gmx im from an, welches vom Server schiessmichtot.at versendet wird?
Jeder. Mehrere Relais sind Üblich und deswegen kommt die Mail recht selten vom Mailserver der dafür zuständig ist. Deswegen hat auch niemand -all im SPF. Womit SPF ein bisschen sinnlos wird. (Genau so wie DKIM.)

Ansonsten bitte bitte mach den thread hier dicht. Das wird so nichts.
Wenn du eine Rundum-info zu Mail haben willst google nach passenden Artikeln/E-Books. Sowas z.B. http://www.informit.com/articles/article.aspx?p=170904
Ein Forum ist da einfach das falsche Medium für. Das gibt nur ein wildes Durcheinander.
Wenn du wirklich Fragen hast. Frag die. Eine Frage ein Thread. so wird das ein wildes durcheinander.

Das ist auch ein sinnvoller grundsätzlicher Ansatz:
zwei Mailserver draus zu machen. Einmal den Einen, der […] meine Emails dann an den IMAP-Server weiterreicht […] und einmal einen Mailserver, der […] als mein eigener Smarthost dient.
Es müssen nicht verschiedene Programme sein. Aber geh die Probleme Einzeln an: TLS (implizit oder explizit) ist ein Thema. Der Transport zu anderen Mailservern (ausgehendes SMTP) ein anderes. Und der MDA (eingehendes SMTP auf Port 25) nochmal eines. Genauso Submission (Eingendes SMTP auf Port 465/587) und IMAP.
Alles zusammen zu behandeln scheint wahnsinnig kompliziert. Jedes für sich ist eigentlich ziemlich einfach.
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: Welche Ports wie für Mailserver

Beitrag von ThorstenS » 10.10.2018 15:58:50

Gute Hinweise, ich werde mein Mailsetup auch mal aktualisieren. Das hier fand ich eben lesenswert: https://thomas-leister.de/mailserver-debian-stretch/

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Welche Ports wie für Mailserver

Beitrag von scientific » 10.10.2018 18:43:04

Dann stell ich mal eine grunsätzliche Frage:

Was ist submission?
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: Welche Ports wie für Mailserver

Beitrag von ThorstenS » 10.10.2018 20:17:46


hec_tech
Beiträge: 1093
Registriert: 28.06.2007 21:49:36
Wohnort: Wien
Kontaktdaten:

Re: Welche Ports wie für Mailserver

Beitrag von hec_tech » 11.10.2018 10:44:38

ThorstenS hat geschrieben: ↑ zum Beitrag ↑
10.10.2018 15:58:50
Gute Hinweise, ich werde mein Mailsetup auch mal aktualisieren. Das hier fand ich eben lesenswert: https://thomas-leister.de/mailserver-debian-stretch/
Das Setup gefällt mir recht gut nur verstehe ich nicht warum man Postscreen UND Rspamd einsetzt. Das macht eigentlich keinen Sinn. Ich würde dazu noch Fail2ban ergänzen.
FTS ist eigentlich immer sinnvoll und macht einem das Leben um einiges leichter.

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Welche Ports wie für Mailserver

Beitrag von scientific » 25.10.2018 14:06:31

Ich habe jetzt eine - für mich - phänomenal neue Erkenntnis gewonnen.

Nachdem es ja soviele Aliase im Zusammenhang mit Mail gibt, stellten sich diese für mich immer alle irgendwie gleich dar. Aber das Gefühl sagte mir seit Jahren, dass da irgendwas nicht stimmt...

Falls nachkommende Generationen einmal über diesen Thread stolpern, so möchte ich es hier festgehalten haben.

Ein Mail-Alias ist:
Es gibt einen Mail-Account. Die Adresse lautet z.B. scientific@besterprovider.der.welt
Beim besten Provider der Welt habe ich Login-Credentials und kann mir dort am Server meine Emails ansehen, abholen und mit dieser Absenderadresse auch über seinen SMTP-Host die Emails versenden (oder direkt an einen Empfänger zustellen).
Da mein Provider der beste Provider der Welt ist, gibt er mir die Möglichkeit eine zweite Email-Adresse einzurichten die troll.gnome@diabolo.hell
Ich kann mit dieser Adresse im Absender (Envelope-From) Emails über den SMTP-Server meines Providers verschicken. Emails an diese Adresse landen physisch in der Mailbox von scientific@besterprovider.der.welt.

Ich habe also eine Mailbox, welche die Post für zwei Adressen aufnimmt. So wie mein Postkasten daheim die Briefe für mich und meine Partnerin aufnimmt, und wir zwei uns dann darum kümmern müssen, wer welchen Brief dann tatsächlich aufmacht - und jeder kann die Briefe des anderen öffnen.

Soweit so gut. Das ist jetzt nicht neu.

Zu was in der Hölle aber gibt es jetzt das File /etc/aliases?
Ja gut... darin kann ich definieren, dass ein Email an root tatsächlich an scientifc zugestellt wird.

Dieses File ermöglicht aber auch, dass ein Mail, welches an "familie" auf dem Server eingeliefert wird, an z.B. scientific und prinzessin gleichermaßen zugestellt wird. Das Format ist nämlich
alias: recepient1,recepient2,...
Das Mail wird einmal in die Mailbox von scientific und ein zweites Mal in die Mailbox von Prinzessin zugestellt...

Die Alias von /etc/alias haben herzlich wenig mit den Alias-Adressen eines Accounts zu tun... auch wenn diese am selben Mailserver vorhanden sind.

Zusammenfassung
  • Ein Mailalias erlaubt die adressierung an mehrere Adressen, aber alle landen in einer einzigen Mailbox. Dass hinter den mehreren Adressen nur eine Mailbox hängt, ist für den Sender nicht transparent.
  • Ein Alias aus /etc/aliases erlaubt die Zustellung an verschiedene Mailboxen, wenn das Mail an eine einzige Adresse versendet wird. Auch die Verteilung an mehrere Empfänger bleibt für den Sender nicht transparent
Im LDAP-Sprech wäre das
mail = die Adresse des Users mit UID=...
dcMailAlias = Email-Adresse an welche die Mail an die Adresse "mail" tatsächlich zugestellt wird (kann mehrfach vorhanden sein = jeder Eintrag dcMailAlias führt zu einer weiteren Zustellung)
dcMailAlternateAddress = Alias-Adresse für den Account mit der Adresse "mail". Zustellung an Jede dieser dcMailAlternateAdress landen in der Mailbox mail - bzw. dcMailAlias

Diese viele->eins bzw. eins->viele Zuordnung, die alle Alias genannt werden, hat mich jetzt tatsächlich jahrelang verwirrt...
Die Anleitungen und Manuals im Netz zu den / für die div. Mailserverkonfigurationen setzen dieses Wissen aber voraus - ohne dass man es irgendwo so klar formuliert lesen kann...

Jetzt sind aber Knöpfe aufgegangen... und jetzt sind mir so viele bisher unverständliche Anleitungen deutlich klarer geworden! :hail: :hail: :hail: :facepalm:

Vielleicht hilft es ja auch hier jemandem.

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Antworten