Ein eigener Mailserver - wie geht das?

  • Bitte poste Terminal-Ausgaben in Code-Tags... in der obigen Forum, bunt und fett und variable Schriftgröße ist für alle eine Zumutung. Code-Tags sind das Icon </> in der Toolbar-Leiste:

    Code
    root@raspimail:/home/pi# dpkg -l libsasl2-modules
    | Status=Nicht/Installiert/Config/U=Entpackt/halb konFiguriert/
    |/ Fehler?=(kein)/R=Neuinstallation notwendig (Status, Fehler: GROSS=schlecht)
    ||/ Name Version Architektur Beschreibung
    +++-================-============-============-=================================
    un libsasl2-modules <keine> <keine> (keine Beschreibung vorhanden)


    Die Lösung kann die Installation des fehlenden Pakets sein... danach zur Sicherheit einfach alles neu starten und testen, ob der Fehler behoben ist.

    Code
    apt update
    apt full-upgrade (wenn Pakete als verfügbar/upgradable angezeigt werden)
    apt install libsasl2-modules
    systemctl reboot
  • Hallo Thomas

    zum ersten nochmals vielen Dank für Deine Hilfe.

    Zum zweiten bin ich, was das Schreiben in einem Forum angeht, eine absolute Niete ;-)

    Daher bitte um Nachsicht, ich werde mich befleißigen um da auch fit zu werden,


    Danke und herzliche Grüße aus Tirol

    Auch wenn ich weiß das ich nicht weiß, bin ich fähig dazuzulernen.(;

  • SMTP anmeldung zu "mail.your-server.de" nicht möglich, kein Mailversand

    Bin gestern auf ein weiteres Problem (für mich) gestoßen:

    Code
    Jän 17 11:16:15 raspimail postfix/qmgr[600]: 6353D1FDFF: from=<gerhard_mubige@mail>, \
    size=487, nrcpt=1 (queue active)
    Jän 17 11:16:16 raspimail postfix/smtp[888]: 6353D1FDFF: to=<gemu@a1.net>, \
    relay=mail.your-server.de[78.46.5.205]:25, delay=63476, delays=63475/0.29/0.38/0, \
    dsn=4.0.0, status=deferred (SASL authentication failed; server mail.your-server.de[78.46.5.205] \
    said: 535 Incorrect authentication data)

    Über "Telnet" oder SMTPDiagPro funktioniert's:

    Code
    SMTPDiagPro testmail 17.01.20 09:38:10 (1 of 1)
    remote type:
    remote host: mail.your-server.de:25 (TLS)
    localhost: EliteBook-8540p
    username: gerhard@mubige.at
    from: gerhard@mubige.at
    to: gemu@a1.net
    attachments: no attachments
    This mail was send with SMTPDiagpro (http://www.smtpdiagpro.com)

    Wieder stehe ich vor einem Rätsel ...... :helpnew: ... wo ist die Nadel im Heuhaufen zu finden :conf:

    Danke

    Auch wenn ich weiß das ich nicht weiß, bin ich fähig dazuzulernen.(;

  • Wenn das im Dialog-Modus im Terminal funktioniert, muss Postfix das auch können. Wenn Postfix dann mit dieser Meldung

    said: 535 Incorrect authentication data)

    scheitert, ist die Ursache klar... die von Postfix verwendeten Anmeldedaten sind fehlerhaft hinterlegt.


    Das bedeutet, diese Datei ist zu kontrollieren, und zwar zeichenweise:

    /etc/postfix/rules/get_relayhost_passwd


    Und je nachdem, womit diese Datei erzeugt wurde, kann das auch eine Fehlerursache sein. Also wenn Du zuvor diese Datei mit einem Windows-Editor erstellt hast, bin ich sogar sicher, dass das der Fehler ist. Diese Datei muss zwingend mit einem Linux-Editor bearbeitet werden, wie nano, vim oder ne, oder auch dem internen Editor vom Midnight-Commander. Wenn Name und Password zweifelsfrei korrekt enthalten sind und keine falschen Leerzeichen eingefügt sind, trotzdem einmal alle Zeilenvorschübe erst entfernen und dann mit der Entertaste direkt hinter dem letzten Zeichen wieder einfügen. War Windows im Spiel liegt ein fehlerhaftes CR/LR (0x0d,0x0a) vor, Linux verwendet nur 0x0a.


    Nach durchgeführten Änderungen in der Datei nicht vergessen, diese wieder in das *.db-Format zu kompilieren....

  • Danke für Deine Rückmeldung.

    Ich bin mittels "PuttY" über SSH am Raspi3 angemeldet, ich habe zwar auch Debian Buster auf dem Rechner, aber ich komme mit der SSH Bedienung noch nicht klar - PuttY kenne ich schon seit Jahren (:


    Mit dem "vi" habe ich die /etc/postfix/rules/get_relayhost_passwd neu erstellt.

    Danach in das Verzeichnis etc/posfix/rules/ gewechselt und ./refresh-rules aufgerufen.

    Das System neu gestartet und nochmal eine Mail gesendet - gleiche Fehlermeldung :no_sad:


    Das ist doch die richtige vorgehensweise, oder?

    Verhält sich der Postfix nach außen wie ein Client, oder wie ein Server?

    Könnten verschärfte Sicherheitsregeln beim Relayserver eine Rolle spielen?

    Auch wenn ich weiß das ich nicht weiß, bin ich fähig dazuzulernen.(;

  • Das ist doch die richtige vorgehensweise, oder?

    Ja, alles richtig gemacht.

    Verhält sich der Postfix nach außen wie ein Client, oder wie ein Server?

    In dem Fall würde ich sagen, er ist ein Client. Postfix muss sich ja auf dem Server des Mail-Providers anmelden... und das tut er imho als Client. Ist das die einzige Email-Adresse mit dieser Fehlerreaktion? Gibt es bei diesem Mail-Provider andere Adressen, die gehen? Gibt es bei anderen Providern das gleiche Problem? Gibt es überhaupt Adressen, die fehlerfrei funktionieren?


    Also Fakt ist, der Anmelde-Prozess schlägt in diesem Fall fehl.... die Fehlermeldung ist eigentlich eindeutig... die Anmeldedaten sind falsch. Wir wissen jetzt nur noch nicht, warum die falsch sind. Das bedeutet, die müssen nicht mal zwangsläufig aufgrund der Zeichenfolgen falsch sein.... aber ich hoffe, dass Du Password UND Name wirklich sorgfältig verglichen hast und die in der 'relayhost_passwd' eingetragenen Daten per Copy/Paste auch mal direkt im Terminaltest probiert hast.


    Eine weitere Problemquelle kann der Port sein. Mich irritiert Port 25 in Deinen Logs.... eigentlich sollte das für SMTP über Port 587 laufen. Kannst Du mal bitte folgende Variante versuchen und jeweils eine von den zwei folgenden Zeilen anfügen:

    mail.your-server.de smtp:mail.your-server.de:587

    your-server.de smtp:your-server.de:587


    Code
    # cat /etc/postfix/rules/check_local_transport_maps
    # Lokal sender, local recipient - prevents transmission
    # over the Internet, processes only local Traffic
    #=======================================================
    mail lmtp:unix:private/dovecot-lmtp
    mail.your-server.de smtp:mail.your-server.de:587

    Nach der Änderung wieder kompilieren und Postfix restarten:

    Code
    systemctl stop postfix
    systemctl start postfix
    systemctl status postfix
  • Mea culpa - was nützt die beste Anleitung wenn der Anwender falsche Eingaben macht :wallbash:

    Also Fakt ist, der Anmelde-Prozess schlägt in diesem Fall fehl.... die Fehlermeldung ist eigentlich eindeutig... die Anmeldedaten sind falsch. Wir wissen jetzt nur noch nicht, warum die falsch sind.

    Was mir auch klar war, denn das abholen der Mail's funktionierte ja. Das ich in der

    Code
    /etc/postfix/rules/get_relayhost_passwd
    gerhard_mubige@mail gerhard@mubige.a:***************
    anstatt
    gerhard_mubige@mail gerhard@mubige.at:****************

    *@mubige.a:**** das "t" unterschlagen hatte, habe ich erst beim neu anlegen der Datei entdeckt, davor einfach nicht gesehen:conf: (alleiniger Fokus auf dass Password).

    Nach der Änderung funktienierte alles wie gewünscht, einfach Klasse,:danke_ATDE:


    Herzlichen Dank für Deine Mühe und Deiner tollen Anleitung, ich habe damit eine Menge dazulernen können :bravo2:

    Auch wenn ich weiß das ich nicht weiß, bin ich fähig dazuzulernen.(;

  • Da bin ich aber froh... danke für die Rückmeldung. Und ja, ohne jeden Zweifel... das sind die gemeinsten Fehler überhaupt. :fies: Das menschliche Auge und der Verstand arbeiten da manchmal leider nicht synchron. X/ Das Auge sieht den Fehler, der Verstand aber überlagert und interpretiert es mit dem, was da eigentlich stehen müsste. Wie sehen den Sch**ß und verstehen es trotzdem, als wäre alles korrekt:


    "Gmäeß eneir Sutide eneir elgnihcesn Uvinisterät ist es nchit witihcg, in
    wlecehr Rneflogheie die Bstachuebn in eneim Wrot snid, das ezniige was
    wcthiig ist, ist, dass der estre und der leztte Bstabchue an der
    ritihcegn Pstoiion snid. Der Rset knan ein ttoaelr Bsinöldn sien,
    tedztorm knan man ihn onhe Pemoblre lseen. Das ist so, wiel wir nciht
    jeedn Bstachuebn enzelin leesn, snderon das Wrot als gseatems."

  • Ich habe auch ein kleines Problem. :blush:

    Und zwar beim senden an gmx bekomme ich die Meldung:

    Code
    relay=mx00.emig.gmx.net[212.227.15.9]:25, delay=67619, delays=67619/0.03/0.16/0, dsn=4.0.0, status=deferred (host mx00.emig.gmx.net[212.227.15.9] refused to talk to me: 554-gmx.net (mxgmx014) Nemesis ESMTP Service not available 554-No SMTP service 554-Bad DNS PTR resource record.

    Was auch klar ist, denn mein Hostname ist mein.dyndns.de aber ein dig +short -x 12.34.56.789 gibt aus:

    HSI-KBW-012-034-056-789.hsi.kabelbw.de.

    Gibt es eine Möglichkeit, dass postfix nicht mein.dyndns.de nimmt, sondern HSI-KBW-012-034-056-789.hsi.kabelbw.de. ? :denker:

  • /etc/postfix/main.cf

    myhostname = "HSI-KBW-012-034-056-789.hsi.kabelbw.de"


    dann

    postfix reload


    Das darfst du bei jedem Wechsel der ext IP/des Hostnamen ändern.

    " […] if you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."

  • Lässt sich das automatisieren ?

    In /var/cache/ddclient/ddclient.cache liegt z.B. meine öffentliche IP:

    Code
    atime=0,backupmx=0,custom=0,host=mein.dyndns.de,ip=12.34.56.789,mtime=1578290168,mx=,script=/nic/update,static=0,status=,warned-min-error-interval=0,warned-min-interval=0,wildcard=0,wtime=30 mein.dyndns.de

    Und mit dig +short -x 12.34.56.789 bekomme ich den Wert HSI-KBW-012-034-056-789.hsi.kabelbw.de zurück.

    :denker:

  • FQDN wäre zwar mit Punkt, ich bin aber nicht sicher, ob Postfix den mag. Ich würde ihn abschneiden.

    " […] if you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."

  • jo auch gerade getestet

    Code
    postfix: warning: valid_hostname: misplaced delimiter:...
    postfix: fatal: file /etc/postfix/main.cf: parameter myhostname: bad parameter value: ....

    " […] if you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."

  • Hallo Thomas,

    zunächst mal Hut ab für deine tolle Anleitung zur Installation eines webserver.

    Habe alles nach besten Gewissen installiert und Zuständigkeiten der einzelnen Dateien geprüft, Dennoch werden keine emails abgeholt. Ich erhalte vom getmail-eventhandler folgende Fehlermeldung:


    process canceled! no suitable linux-user found in alias_maps: Virtuser=cherry_gmx@mail


    alias_maps sieht wie folgt aus:


    # Assigns virtual dovecot-user to a suitable linux-user

    #========================================================

    cherry_kir cherry

    cherry_gmx cherry


    Der user "cherry" ist im raspberry angelegt:

    uid=1005(cherry) gid=1005(cherry) Gruppen=1005(cherry),5000(vmail)


    Wieso wird kein suitable linux-user in der alias_maps nicht gefunden?

    Woran kann das liegen? Gibt es eine Möglichkeit der Fehlersuche(Script oder Befehle)


    Die Postfächer in Thunderbird konnten problemlos angelegt werden.


    Gruß

    hdkirschbaum

  • process canceled! no suitable linux-user found in alias_maps: Virtuser=cherry_gmx@mail

    Wie ist der virtuelle User "cherry_gmx@mail", der in der Fehlermeldung genannt wird, in der Datei /etc/dovecot/passwd angelegt...?... also der Teil der Zeile bis zum Doppelpunkt bzw. ":{PLAIN-MD5}". Das ist der Anmeldename an Dovecot, also...welcher Name steht dort? Exakt dieser virtuelle Name wird in der alias_maps mit gleicher Schreibweise einem echten Linux-User zugeordnet.

  • Hallo Thomas,

    vielen dak für die schnelle Antwort. In der /etc/dovecot/passwd ist anglegt:


    cherry_gmx:{PLAIN-MD5}6841f1850cf6303c45c7e9289962b22f:vmail:vmail::::userdb_mail=maildir:/mnt/hdd/Mail/Imap/cherry/cherry_gmx


    Ich denke, das ist ok.

  • Das ist der Teil-Code, der mit dem von Dovecot übergebenen virtuellen User in der alias_maps den Linux User ermittelt. Dovecot kennt mich als virtuellen User "toml", und die Rückgabe hier ist "thomas", das ist mein Linux-Name:

    Code
    # echo $(awk '$1 == "'toml'" {print $2;exit}' /etc/dovecot/alias_maps)
    thomas

    Bei Dir müsste für den virtuellen Dove-User "cherry_gmx" der (wie Du sagst) User "cherry" beim ersten Beispiel zurückgegeben werden. Tut es das? Beim 2. Beispiel müsste des leer bleiben. Nur zum Henker... wo kommt das @mail hinter dem Namen her, wenns nicht in der Password-DB drinsteht?

    Code
    # echo $(awk '$1 == "'cherry_gmx'" {print $2;exit}' /etc/dovecot/alias_maps)
    # echo $(awk '$1 == "'cherry_gmx@mail'" {print $2;exit}' /etc/dovecot/alias_maps)

    Mich irritiert an der Stelle in der Fehlermeldung das "@mail" bei "Virtuser=cherry_gmx@mail", das ist bei mir nicht der Fall. Der vrituelle User hat hier nur den Namen, ohne @mail.

    Code
    # journalctl -b | grep getmail | grep toml
    Aug 11 19:09:45 server thlu:getmail_eventhandler[8407]: started: VirtUser=toml LinuxUser=thomas UID=1025
    Aug 11 19:09:45 server thlu:getmail_eventhandler[8420]: append lock-file-entry for: toml (thomas)

    Als mögliche weitere Ursache fällt mir ein Format-Fehler bei der alias_maps noch ein. Das kann passieren, wenn die Datei mit einem Windows-Editor erstellt wurde und sowas führt planmäßig zu Problemen. Alle Files müssen in Linux erstellt werden, mit nano oder ähnlich. Was möglicherweise auch noch helfen könnte, wäre ein "# systemctl reboot"

    Edited once, last by ThomasL ().