Aller Anfang... (Postfix, SMTP Relay, etc)

Status
Für weitere Antworten geschlossen.

Telaran

Benutzer
Mitglied seit
30. Jul 2010
Beiträge
19
Punkte für Reaktionen
0
Punkte
1
Nach knapp 4 Tagen Google, Foren, Webseiten und Wiki's kapituliere ich mal, und wende mich an euch.

Was möchte ich
Ich möchte alle meine E-Mail Adressen sammeln und meinen DS410 als Mailserver Zentrale nutzen. Das bedeutet mittels getmail (POP3) alle Mails abrufen und ablegen. Soweit so Gut.

Diese E-Mail Adressen sind 3x domain1, 2x domain2 und 1x GMX. Ich will also nun mittels SMTP Relay gewährleisten, dass wenn ich von 1. domain1 eine Mail sende, dass diese authentifiziert wird und auch als 1. domain1 beim Empfänger ankommt. Derzeit experimentiere ich nur mit der domain1.

Hier liegt der Hund begraben und habe nun 4 Tage kein Ergebnis erzielt.

Was habe ich bisher getan

Wo ist nun das Problem
Es sind 3 Dinge, welche schief laufen:
  1. Der Alternative Pfad der Konfiguration will nicht gelesen werden
  2. Falls ich es anders löse, will die Mail nicht versendet werden
  3. Habe keine Aussagekräftige Logs

Details
Ich verwende die Standard Mailstation von Synology. Der Spamfilter von Synology ist deaktiviert und dafür der eigenständige Spamassassin via IPKG installiert. Postfix verwende ich ebenfalls den von Synology zur Verfügung gestellten.

Die Datei "/usr/syno/mailstation/etc/main.cf" hat in der ersten Zeile folgenden Befehl
Rich (BBCode):
alternate_config_directories = /volume1/_config/postfix

Im erwähnten Verzeichnis "/volume1/_config/postfix" wäre eine 1:1 Kopie des Originals. Aber mit folgenden Anpassungen am Ende der Datei:

Rich (BBCode):
# SASL authentication
smtp_sender_dependent_authentication = yes
smtp_sasl_auth_enable = yes

smtp_sasl_password_maps = hash:/volume1/_config/postfix/sasl_passwd

smtp_sasl_security_options = noanonymous

transport_maps = hash:/volume1/_config/postfix/transport
sender_dependent_relayhost_maps = hash:/volume1/_config/postfix/sender_relay

sasl_passwd sieht wie folgt aus:
Rich (BBCode):
# Per-sender authentication; see also /etc/postfix/sender_relay.
user1@domain1               user1:pw1
user2@domain1               user2:pw2
user3@domain1               user3:pw3

sender_relay so:
Rich (BBCode):
# Per-sender provider; see also /etc/postfix/sasl_passwd.
user1@domain1               smtp.domain1
user2@domain1               smtp.domain1
user3@domain1               smtp.domain1

und transport so:
Rich (BBCode):
domain1 smtp:[smtp.domain1]

Mittels "/usr/syno/mailstation/sbin/postconf" kann ich die Konfiguration prüfen und habe festgestellt, dass er meine angepasst Konfiguration nicht nimmt. Das bedeutet, dass er die Mails mit der eigenen IP versendet und somit zu 99% im Spamfilter landet.

Füge ich den erwähnten Teil (am Ende der Alternativ Config) in der Hauptdatei, habe ich gemäss Postconf die Einstellungen. Nachteil ist aber, dass danach keine Mails versendet werden, wenn ich Domain1 Mails versenden möchte.

Ein "tail -f /var/log/messages" ergibt keine Anzeige und ein "find / -name mail" macht mir deutlich, dass keine spezifische Mail Log erstellt wird.

Achja, für den postfix habe ich folgendes kleines Script genommen:
Rich (BBCode):
MS_SBIN=/usr/syno/mailstation/sbin
MS_POSTFIX=/volume1/_config/postfix

cd $MS_POSTFIX

$MS_SBIN/postmap $MS_POSTFIX/sasl_passwd
$MS_SBIN/postmap $MS_POSTFIX/sender_relay
$MS_SBIN/postmap $MS_POSTFIX/transport
$MS_SBIN/postfix stop
$MS_SBIN/postfix start

Wie nun weiter
Ich denke der erste und wichtigste Schritt wäre: Wie komme ich zu einem brauchbaren Log, damit ich weiss, wo ich mit der suche Anfangen soll.
Muss ich dafür eventuell irgendwo was nachtragen? Falls ja, wo und was?

Der nächste Schritt wäre dann die Alternativ Konfiguration zum laufen zu bekommen. An der Berechtigung sollte es nicht liegen (Owner ist Root, Gruppe User). Sonst müsste das zumindest melden (z.B. bei den DB's).

Zu guter Letzt dann natürlich das Relaying mit Authentifizierung.

Achja, da in meiner Firma Paranoiker arbeiten, kann ich nur Morgens oder Abends detaillierte Informationen zu der Boxumgebung anbieten.

Ich danke bereits im Vorfeld für Eure Bemühungen, Vorschläge und Denkanstösse in die richtige Richtung.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
1. du brauchst nicht unbedingt eine alternative Konfigdatei. Du kannst deine Änderungen auch in der Hauptkonfig /usr/syno/mailstation/etc/main.cf machen. Denn nur ganz wenige Einträge werden beim Start der Mailstation vom Startscript überschrieben (z.B. myhostname)

2. du brauchst für dein Vorhaben KEIN transport. Denn transport ist empfängerbasiert und du brauchst für dein Vorhaben etwas senderbasiertes

3. Hast du sowohl bei sasl_passwd als auch bei sender_relay die beiden Dateien mittels postmap ins korrekte Format gebracht? Das sind keine Textdateien und postfix kann sie nicht gebrauchen, solange sie nicht mit postmap in ein brauchbares Format gebracht wurden.

4. ein sehr gutes Logprogramm ist syslog-ng. Dieses findest du über ipkg. Sowohl zu ipkg als auch zu syslog-ng gibt es mehr Infos in userem Wiki

5. Hast du den postfix Server auch neugestartet, nachdem du die Änderungen an der Konfig gemacht hast?
Code:
/usr/syno/mailstation/bin/postfix reload
(bin nicht ganz sicher ob bin oder sbin)
 

Telaran

Benutzer
Mitglied seit
30. Jul 2010
Beiträge
19
Punkte für Reaktionen
0
Punkte
1
1. du brauchst nicht unbedingt eine alternative Konfigdatei. Du kannst deine Änderungen auch in der Hauptkonfig /usr/syno/mailstation/etc/main.cf machen. Denn nur ganz wenige Einträge werden beim Start der Mailstation vom Startscript überschrieben (z.B. myhostname)
Ich fand den Ansatz eine Konfigdatei auszulagern, wie im Wiki Eintrag erwähnt sinnvoll. Es macht einfach die ganze Administration auch einfacher (mit UltraEdit direkte Zugriffe auf den speziellen Konfigurationsordner). Im Endeffekt ist es nur ein "Wäre schön wenn"...

Habe kein Problem, wenn es in der "Hauptdatei" abgelegt wäre.

2. du brauchst für dein Vorhaben KEIN transport. Denn transport ist empfängerbasiert und du brauchst für dein Vorhaben etwas senderbasiertes
Dann habe ich wohl die ganzen Beschreibungen missverstanden. Ist ja kein Ding es wieder auszukommentieren. Auf die Idee kam ich auch heute früh.. hat aber keinen Einfluss auf den SMTP Relay Problem.

3. Hast du sowohl bei sasl_passwd als auch bei sender_relay die beiden Dateien mittels postmap ins korrekte Format gebracht? Das sind keine Textdateien und postfix kann sie nicht gebrauchen, solange sie nicht mit postmap in ein brauchbares Format gebracht wurden.
Wie in meinem Posting zu sehen wäre (das Skript) mache ich ein Postmap und die entsprechenden DB Dateien sind unter "/volume1/_config/postfix/" abgelegt und da ich den Pfad der Konfiguration hinterlegt habe, sollte es auch keine Probleme darstellen diese zu verwenden/lesen.

Würde er die Dateien nicht finden oder wären sie defekt/nicht lesbar, würde der Dienst nicht starten (hatte am Anfang diesen Fehler gemacht, deswegen weiss ich es)

4. ein sehr gutes Logprogramm ist syslog-ng. Dieses findest du über ipkg. Sowohl zu ipkg als auch zu syslog-ng gibt es mehr Infos in userem Wiki
Werde ich heute Abend mal installieren. Hoffe dass ich damit dann endlich herausfinde, wo das Problem ist.

5. Hast du den postfix Server auch neugestartet, nachdem du die Änderungen an der Konfig gemacht hast?
Im Skript mache ich ein postfix stop und anschliessend postfix start. Das sollte dem Reload gleich kommen?
 
Zuletzt bearbeitet:

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Installier dir mal syslog-ng. Der ist sehr gesprächig mit den Logfiles. Da wirst du hunderte von Meldungen des Mailservers sehen ;)
Stop/Start und Reload sind nicht genau dasselbe. Bei Stop/Start wird der Prozess effektiv beendet. Dazwischen ist also dein Mailserver nicht mehr erreichbar. Bei einem reload hingegen wird nur die Konfig neu eingelesen ohne Unterbrechung des Service.
 

Telaran

Benutzer
Mitglied seit
30. Jul 2010
Beiträge
19
Punkte für Reaktionen
0
Punkte
1
Bei Stop/Start wird der Prozess effektiv beendet. Dazwischen ist also dein Mailserver nicht mehr erreichbar. Bei einem reload hingegen wird nur die Konfig neu eingelesen ohne Unterbrechung des Service.
Okay, aber wenn es darum geht, dass die neue Konfiguration geladen werden muss, sind beide Wege möglich. Reload wäre einfach "schöner" (da es keinen Unterbruch gibt). Passe ich dann mal bei meinem Skript an.

Zum syslog-ng.
Wäre der SSH auf dem Android nicht so "umständlich", würde ich es jetzt machen, aber es muss wohl bis heute Abend warten.. dann hoffe ich, dass sich der Übeltäter zeigt ;)

Danke für die ersten Hinweise.
 

Telaran

Benutzer
Mitglied seit
30. Jul 2010
Beiträge
19
Punkte für Reaktionen
0
Punkte
1
Sooo geht doch, wenn auch auf Umwegen ;)

Rich (BBCode):
DS9> tail -f /opt/var/log/mail.log
Aug  3 11:31:46 DS9 postfix/smtp[3630]: EA3DB1FA003: lost connection with mx0.gmx.net[213.165.64.100] while receiving the initial server greeting
Aug  3 11:31:46 DS9 postfix/smtp[3630]: EA3DB1FA003: to=<user1e@gmx>, relay=mx1.gmx.net[213.165.64.102]:25, delay=255779, delays=255778/0.06/0.15/0, dsn=4.4.2, status=deferred (lost connection with mx1.gmx.net[213.165.64.102] while receiving the initial server greeting)
Aug  3 11:33:18 DS9 postfix/smtpd[3665]: connect from localhost[127.0.0.1]
Aug  3 11:33:18 DS9 postfix/smtpd[3665]: C23BD1FA00F: client=localhost[127.0.0.1], sasl_method=LOGIN, sasl_username=user1
Aug  3 11:33:18 DS9 postfix/cleanup[3669]: C23BD1FA00F: message-id=<56e16d0a7ea6e0dd02d49c0e0dd1398c@starfleet.local>
Aug  3 11:33:18 DS9 postfix/smtpd[3665]: disconnect from localhost[127.0.0.1]
Aug  3 11:33:19 DS9 postfix/smtp[3630]: C23BD1FA00F: to=<user1@domain2>, relay=none, delay=0.23, delays=0.11/0/0.12/0, dsn=4.4.3, status=deferred (Host or domain name not found. Name service error for name=smtp.domain1 type=MX: Host not found, try again)
Aug  3 11:36:46 DS9 postfix/smtp[3695]: 20DE81FA00C: to=<user1@domain2>, relay=none, delay=47198, delays=47198/0.06/0.07/0, dsn=4.4.3, status=deferred (Host or domain name not found. Name service error for name=smtp.domain1 type=MX: Host not found, try again)
Nun fallen mir folgende Dinge auf:

GMX Eintrag
Ich habe noch gar keinen SASL für GMX eingerichtet. Weiter ist interessant, dass der Relay mit angegeben wird.

sasl_method=LOGIN, sasl_username=user1
Eigentlich versende ich eine E-mail mit dem "user2" und nicht dem "user1" der domain1. Wieso also nun der user1 erwähnt wird, wirft Fragen auf

to=<user1@domain2>, relay=none
Wenn man beim GMX eintrag sieht, steht dort ein Relay. Beim Test-Mail hingegen ist kein Relay Eintrag zu finden. Das würde bedeuten, dass er die Relayliste nicht lesen/nutzen kann?

Fragen über Fragen, aber immerhin habe ich Anhaltspunkte
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Sooo geht doch, wenn auch auf Umwegen ;)

Rich (BBCode):
DS9> tail -f /opt/var/log/mail.log
Aug  3 11:31:46 DS9 postfix/smtp[3630]: EA3DB1FA003: lost connection with mx0.gmx.net[213.165.64.100] while receiving the initial server greeting
Aug  3 11:31:46 DS9 postfix/smtp[3630]: EA3DB1FA003: to=<user1e@gmx>, relay=mx1.gmx.net[213.165.64.102]:25, delay=255779, delays=255778/0.06/0.15/0, dsn=4.4.2, status=deferred (lost connection with mx1.gmx.net[213.165.64.102] while receiving the initial server greeting)
Aug  3 11:33:18 DS9 postfix/smtpd[3665]: connect from localhost[127.0.0.1]
Aug  3 11:33:18 DS9 postfix/smtpd[3665]: C23BD1FA00F: client=localhost[127.0.0.1], sasl_method=LOGIN, sasl_username=user1
Aug  3 11:33:18 DS9 postfix/cleanup[3669]: C23BD1FA00F: message-id=<56e16d0a7ea6e0dd02d49c0e0dd1398c@starfleet.local>
Aug  3 11:33:18 DS9 postfix/smtpd[3665]: disconnect from localhost[127.0.0.1]
Aug  3 11:33:19 DS9 postfix/smtp[3630]: C23BD1FA00F: to=<user1@domain2>, relay=none, delay=0.23, delays=0.11/0/0.12/0, dsn=4.4.3, status=deferred (Host or domain name not found. Name service error for name=smtp.domain1 type=MX: Host not found, try again)
Aug  3 11:36:46 DS9 postfix/smtp[3695]: 20DE81FA00C: to=<user1@domain2>, relay=none, delay=47198, delays=47198/0.06/0.07/0, dsn=4.4.3, status=deferred (Host or domain name not found. Name service error for name=smtp.domain1 type=MX: Host not found, try again)
Nun fallen mir folgende Dinge auf:

GMX Eintrag
Ich habe noch gar keinen SASL für GMX eingerichtet. Weiter ist interessant, dass der Relay mit angegeben wird.
Der Empfangsserver ist immer ein Relay-Server. Denn dein Postfix kann ja nicht wissen ob der Server die Endstation für die Mail ist oder ob er die Mail noch weiterleitet. Für einen gmx Empfänger wird der Relay Server aus dem Empfangsadresse abgeleitet --> das ist korrekt

sasl_method=LOGIN, sasl_username=user1
Eigentlich versende ich eine E-mail mit dem "user2" und nicht dem "user1" der domain1. Wieso also nun der user1 erwähnt wird, wirft Fragen auf
Und du meldest dich beim SMTP Server auch sicher als user2 an und nicht etwa doch als user1. Das bezieht sich nicht auf den Absender, sondern auf den User, der sich beim Server authentifizieren konnte. In den SMTP Einstellungen musst du user1 verwendet haben und ni cht user2

to=<user1@domain2>, relay=none
Wenn man beim GMX eintrag sieht, steht dort ein Relay. Beim Test-Mail hingegen ist kein Relay Eintrag zu finden. Das würde bedeuten, dass er die Relayliste nicht lesen/nutzen kann?
Wenn der Postfix keinen Relay Server dazu findet, dann wirst du wohl einen Absender verwendet haben, der keinen Eintrag in sender_relay hat.

Fragen über Fragen, aber immerhin habe ich Anhaltspunkte
Hast du die Logfiles verändert? Denn du verwendest nicht existente Domains als Empfänger. Dann ist es eigentlich logisch, dass diese Mails nicht zugestellt werden können.
 

Telaran

Benutzer
Mitglied seit
30. Jul 2010
Beiträge
19
Punkte für Reaktionen
0
Punkte
1
Hast du die Logfiles verändert? Denn du verwendest nicht existente Domains als Empfänger. Dann ist es eigentlich logisch, dass diese Mails nicht zugestellt werden können.
Ja ich verändere die Logfiles, genau so wie im Eingangspost die Beispiele. Ob nun domain1 = gmx.ch oder freemail.de wäre, sollte für die Ermittlung der Probleme nicht relevant sein oder? ;)

Also ich habe nun eine Vermutung, die aber das ganze nicht "schöner" macht:

sasl_method=LOGIN, sasl_username=user1
user1 ist in Wirklichkeit der Benutzer, der sich am Roundcube anmeldet. Sprich ich bin von einer falschen annahme ausgegangen.

Die Konstellation ist nämlich wie folgt:
Synology: 1 Benutzer (nenen wir ihn MySynUsr)
Mail: 3 Domains, zwischen 1 und 3 User pro Domain. Authentifizierung immer mittels Mailadresse + PW.

Wenn ich also eine Email auf user1@domain1 bekomme und auf diese Antworte mit user1@domain1, soll die Mail mittels Relay an Domain1 gereicht werden.

Wenn ich aber nun (für meine Tests) am RoundCube Webmail zugreife, melde ich mich mit "MySynUsr" an. Auch wenn ich im RoundCube meine Absenderadresse wählen kann (z.B. user1@domain1), scheint die Mail und die SASL Login mit dem "MySynUsr" gemacht zu werden, anstelle des "user1@domain1" Benutzers.

Aus diesem Grund wird er wohl im sasl_passwd und sender_relay keinen Eintrag finden.

Ich sollte also eine Authentifizierung auf Ebene meiner "Absenderadresse" realisieren.Das würde wohl bedeuten, dass ich wohl analog dem Wiki Beitrag arbeiten müsste. Vermutlich mit "smtpd_sender_restrictions". Bin ich mit der Annahme richtig?

Denn ich bin ja nicht der erste, der mehrere Domains Verknüpfen will und andere haben es anscheinend mit einfachen Sender_relays realisiert?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Die Auth am SMTP Server hat nichts mit dem Absender zu tun. Ich melde mich mit einem User an und kann dann Mails mit allen Absendern verschicken. Es ist also immer der gleiche SMTP User, unabhängig vom verwendeten Absender. sender_relay ist vollkommen unabhängig vom SMTP User, nur die verwendete Absenderadresse ist entscheidend für den weiteren Weg der Mail.

Wenn also eine Mail direkt an den Empfangsserver geht, dann nur deshalb weil in sender_relay und/oder sasl_passwd kein entsprechender Eintrag für einen Relay-Server gefunden wurde.
Hier am Beispiel meines Providers:
Code:
#sasl_passwd
me@myprovider.tld   me@myprovider.tld:totalGeheim

#sender_relay
me@myprovider.tld  [smtp.myprovider.tld]:submission
die Klammern [] führen dazu, dass Postfix nicht nach einem mx Eintrag für den Host sucht, sondern die Zustellung direkt am angegebenen Host versucht. Der Submission legt fest, dass der Versand nicht via Port 25 sondern Port 587 (submission port) erfolgt. So aktzeptiert mein Provider Mails von seinen Kunden nur auf Port 587 und Mails von extern für die Kunden nur auf Port 25.
 

Telaran

Benutzer
Mitglied seit
30. Jul 2010
Beiträge
19
Punkte für Reaktionen
0
Punkte
1
Danke für dein Beispiel und einer schlüssigen Erklärung, wofür man [] einsetzen kann

Habe nun nochmals die Konfigurationen durchgeackert und nun geht es.


sasl_passwd blieb unverändert:
Rich (BBCode):
# Per-sender authentication; see also /etc/postfix/sender_relay.
user1@domain1               user1:pw1
user2@domain1               user2:pw2
user3@domain1               user3:pw3

sender_relay wurde mit der Erkenntnis der [] ergänzt:
Rich (BBCode):
# Per-sender provider; see also /etc/postfix/sasl_passwd.
user1@domain1               [smtp.domain1]
user2@domain1               [smtp.domain1]
user3@domain1               [smtp.domain1]

Das wars schon.
Hatte im nach hinein noch paar Berechtigungsprobleme mit den Postmap DB Dateien, aber diese konnte ich leicht beheben. Postfix reloaded und schon kamen alle Mails von den letzten 3 Tagen in meine anderen Postfächer an.

Die Sache mit einem möglichen Alternativ-Pfad werde ich noch angehen, aber das eilt nicht :D Auch bisschen Kosmetik (anstelle Aliase im Outlook mittels Mailserver die SMTP Relays Regeln) kann noch warten.

Danke nochmals!
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat