Posts Tagged ‘smtp’

Samstag, 24. Oktober 2026

Migadu: „550 5.7.1 sender address rejected: not allowed“

Wegen anhaltender Probleme mit Cyons Email-Infrastruktur, und insbesondere auf Grund eines unterschiedlichen Verständisses zwischen Kunde und Anbieter, für was eine solche Infrastruktur gebraucht werden kann und dabei tolerieren sollte, bin ich auf Migadu gestossen.

Der Anbieter will nur eines machen: Email, und zwar gut, für Power User und Geeks. Ein fantastisches Produkt!

Ich habe deshalb über Hostpoint eine zweite Domain gekauft, und wickle nun emailbasierte Systemmeldungen meines Serverparks über Migadu ab.

So möchte ich verhindern, dass mir Cyon über mehrere Tage hinweg wegen „Problemen“ mit Emails meiner Infrastruktur meine privaten und geschäftlichen Emails abklemmt.

In dem Zusammenhang: Cyons Crew ändert auch schon mal einfach so das Passwort eines angeblich „kompromittierten“ Email-Kontos (Meine Meinung: Bounces sind kein Hackerangriff …), und blockiert dann wenig später gleich das ganze Kundenkonto, weil die Automationen, welche mit dem alten, vom Kunden gesetzten Passwort weiter regelmässig auf das Email-Konto zugreifen wollen, dann als noch grössere „Attacke“ erachtet werden. Item.

Migadu hat Restriktionen, wie viele „outgoing“ Mails man versenden kann. Der Clou: Emails, welche innerhalb der eigenen Domain versendet werden, zählen hierbei nicht. Solange ich also von server.xyz@meineinfra.tld an events@meineinfra.tld maile, kann ich so viele Mails rauslassen wie ich will (vermutlich zieht aber dennoch Fair Use).

In den letzten Tagen stauten sich plötzlich Emails auf meinen Servern und konnten über Migadu nicht ausgeliefert werden.

In den Postfix-Logs tauchte immer wieder folgende Meldung auf:

...
Oct 23 19:06:28 SERVER postfix/smtp[73067]: Untrusted TLS connection established to smtp.migadu.com[51.210.223.36]:587: TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256
Oct 23 19:06:29 SERVER postfix/smtp[73067]: 9556D5F006: to=, relay=smtp.migadu.com[51.210.223.36]:587, delay=121, delays=0.01/120/0.24/0.04, dsn=5.7.1, status=bounced (host smtp.migadu.com[51.210.223.36] said: 550 5.7.1 sender address rejected: not allowed (in reply to end of DATA command))

In meiner Recherche fand ich heraus, dass das Problem am 15. Oktober aufzutreten begann. Ich könnte schwören, dass ich an dem Tag nichts an Migadu geändert hatte. Aber ich kann mich täuschen.

Lustigerweise betraf dies nicht alle Emails, viele Mails kamen weiterhin durch, und anfänglich machte alles keinen Sinn.

Bis ich auf folgenden Blog-Artikel stiess: Email aliases: receive and send with a different address per sender. Dort wurde sowohl Migadu erwähnt, als auch genau die von mir beobachtete Fehlermeldung.

Die Schlüsselstelle im Artikel:

  1. In the Migadu admin, open the domain, then Mailboxes, then the mailbox that receives everything.
  2. Turn on Wildcard sender. The mailbox may now send as any address of this domain, with its own login. Identities don’t inherit the right.
  3. Open the domain settings and set the catch-all („improperly addressed messages“) to deliver to that mailbox.
  4. Use smtp.migadu.com, port 465 (SSL), with the mailbox address and password, in every client.

Jetzt ging mir ein Licht auf. Die Emails, die nicht ankamen, wurden über server.xyz@meineinfra.tld versendet, trugen als Absender aber From: monitoring@meineinfra.tld. Das hatte seit Eröffnung des Migadu-Kontos problemlos funktioniert, nun aber nicht mehr.

Nach etwas Herumpröbeln im Migadu-Interface dann die Lösung:

  • Email Domains > meineinfra.tld > Mailboxes > server.xyz@meineinfra.tld > Wildcard Sender > [x] Permit wildcard sending Authentifiziere ich mich mit diesem Konto gegen Migadus SMTP, kann ich in From: einen beliebigen Präfix von @meineinfra.tld verweden.
  • monitoring@meineinfra.tld hatte ich bei Eröffnung des Kundenkontos als Mailbox eingerichtet. Diese brauche ich aber nicht wirklich, da ich die Email-Adresse nur als Absenderadresse verwende. Somit habe ich die Mailbox gelöscht.
  • Stattdessen erstellte ich unter Email Domains > meineinfra.tld > Mailboxes > server.xyz@meineinfra.tld >Identities eine neue Identity monitoring@meineinfra.tld, und gab ihr das Attribut Not used for authentication, sender persona only

Und siehe da, nach ein paar Minuten begannen meine Server, die bis jetzt zurückgewiesenen Emails in deren Postfix Queue auszuliefern.

Übrigens: Egal ob Cyon oder Migadu oder ein anderer Mail-Anbieter, was man auf keinen Fall will: Einen SMTP respektive eine INBOX mit Emails im Sekundentakt fluten. Deshalb habe ich in meiner Postfix main Folgendes stehen:

...
initial_destination_concurrency = 1
default_destination_concurrency_limit = 1
default_destination_rate_delay = 60
default_destination_recipient_limit = 2
default_process_limit = 100
...

Tags: , , , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Samstag, 17. Januar 2026

Cyon forciert übereinstimmendes From: mit Envelope-From:, und postfix füllt nach der Neukonfiguration mein Syslog

Heute habe ich meine postfix-Installationen umkonfiguriert, damit sie auch zukünftig mit Cyons Mail-Servern zu Schlage kommen. Angabegemäss werden von deren SMTP-Server ab Februar 2026 keine Emails mehr entgegengenommen, deren Envelope-From:-Adresse von der From:-Adresse abweicht.

Bei Linux-Servern in meinem LAN mit .local FQDNs kommt das nicht gut. Die Lösung lag in dieser Konfigurationsoption in main.cf:

...
canonical_maps = regexp:/etc/postfix/canonical
canonical_classes = envelope_sender

Der Inhalt der Datei:

# Use the empty regexp to map *any* address to the desired envelope sender.
// user@domain.tld

domain.tld sollte der Domainname der effektiv bei Cyon gehosteten Web-Site sein. Ob der user existieren muss, weiss ich nicht; bei mir existiert er (es ist derselbe Benutzer, mit welchem ich postfix gegen Cyons SMTP authentifiziere).

Quelle: How do I change the Envelope From in Postfix?

Nun, das funktionierte nach etwas pröbeln astrein und läuft nun auf knapp zehn Servern reibungslos.

Auf einem einzigen Server hatte ich dann aber das Problem, dass /var/log/postfix.log nonstopp mit Meldungen in folgender Form geflutet wurde:

Jan 17 20:37:41 SERVER postfix/postdrop[1628008]: warning: mail_queue_enter: create file maildrop/46446.1628008: Read-only file system

Das Debugging ging los:

  • Das Filesystem ist als Read-Write (rw) gemountet
  • /var/spool/postfix/maildrop wies genau dieselben Berechtigungen auf wie dieselben Verzeichnisse auf allen anderen Servern
  • Sicherheitshalber liess ich mein AppArmor-Konfigurationsscript noch einmal laufen, welches alle Apps in den Complain-Modus schaltet (habe ich erwähnt, dass dieses „Sicherheitstool“ ein absolutes Miststück ist? Hat mich schon Stunden an Debugging gekostet, installiert sich regelmässig neu, und hat mich noch nie vor irgendeinem Angriff bewahrt, davon bin ich überzeugt)

Half alles nichts. Forumbeiträge zur Fehlermeldung waren rar, und spielten alles durch, was ich oben bereits überprüft hatte.

Eine Volltreffer-Empfehlung gab es aber:

$ killall postdrop

Und dann war tatsächlich Ruhe im Karton.

Tags: , , , , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 30. September 2020

PHPMailer 5.2.28 kann über SMTP keine Mails versenden: „key too small“

Für ein Projekt möchte ich ein Web-Formular als E-Mail versenden. Um die sensitiven Daten besonders gut zu schützen, möchte ich das E-Mail direkt vom Hosting Web-Server auf den Ziel-Mailserver senden und den lokalen SMTP des Hostinganbieters nicht mit den Daten in Berührung kommen lassen. Und die Übermittlung des E-Mails an den SMTP-Server müsste auch noch verschlüsselt erfolgen.

Leider verfügt der Ziel-SMTP-Server über ein (mittlerweile) schwaches Zertifikat, denn PHPMailer respektive OpenSSL weigert sich, verschlüsselt mit dem SMTP-Server zu kommunizieren:

...
2020-09-30 19:48:46 Connection failed. Error #2: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small [../PHPMailer-5.2.28/class.smtp.php line 374]
...

PHPMailer gibt diese Debug-Meldungen direkt an den Browser aus, wenn man bei der Initialisierung der Klasse folgende Option aktiviert:

...
$mail = new PHPMailer();
...
$mail->SMTPDebug = SMTP::DEBUG_LOWLEVEL;
...

Andere, weniger geschwätzige Optionen sind: SMTP::DEBUG_CLIENT, SMTP::DEBUG_SERVER, SMTP::DEBUG_CONNECTION. SMTP::DEBUG_OFF unterdrückt jegliche Debug-Meldungen.

Das Problem ist, dass der vom Server verwendete Diffie Hellman-Key zu kurz ist; im vorliegenden Fall ist er nur 1024 bit lang. Dies erlaubt Logjam-Attacken.

Überprüfen kann man die Key-Länge mit folgendem Befehl:

$ openssl s_client -connect mailserver.tld:25 -starttls smtp
...
Server Temp Key: DH, 1024 bits
...

Beim Debugging habe ich auch noch den Web-Service www.checktls.com entdeckt, der mir bestätigt hat, dass der Server grundsätzlich verschlüsselt spricht.

Nun, entweder überzeugt man den Betreiber des SMTP-Servers, die Verschlüsselungskonfiguration anzupassen respektive einen neuen Schlüssel zu generieren.

Falls dies keine Option ist, und man das Risiko in Kauf nehmen möchte, gibt es aber noch folgende Möglichkeit:

...
$mail = new PHPMailer();
...
$mail->SMTPSecure = 'tls';
$mail->SMTPOptions = array(
    'ssl' => array(
        'security_level' => 0
    )
);
...

Die Option security_level gibt es seit PHP 7.2 und OpenSSL 1.1.0. Mögliche Werte sind in der offiziellen Dokumentation nachzuschlagen. 0 bedeutet sinnbildlich NULL Sicherheit.

DIESER WORKAROUND ERFOLGT AUF EIGENE GEFAHR! Ich würde das nur machen, wenn man sich wirklich bewusst ist, was man tut.

Tags: , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 19. Februar 2017

ELK: Race Condition mit resolv.conf und WiFi

Seit einer Woche läuft auf einem Laptop bei mir zu Hause der ELK-Stack und sammelt per Syslog die Logs aller meiner Devices an drei Standorten. In unregelmässigen Abständen werde ich hier über Erkenntnisse berichten, die ich dank der zentralisierten Analyse der Logs gemacht habe.

Dank ELK fand ich auf Grund von postfix Log-Meldungen bald einmal heraus, dass mein Raspberry Pi 3, welcher ein Dashboard in unserer Wohnung antreibt, keine E-Mails versenden kann. postfix konnte den Hostnamen meines Mail-Providers nicht auflösen:

DASHBOARD postfix/error[1234]: ABCDEF: to=<log@domain.tld>, orig_to=<root@dashboard>, relay=none, delay=40662, delays=40584/78/0/0.27, dsn=4.4.3, status=deferred (delivery temporarily suspended: Host or domain name not found. Name service error for name=server41.cyon.ch type=A: Host not found, try again)

Nach einer längeren Debugging-Session dann die Erkenntnis:

The problem is that Postfix checks /etc/resolv.conf before the WiFi is connected. Therefore, /var/spool/etc/postfix/resolv.conf stays empty after the boot and mails cannot be sent.

Quelle: Postfix error: Host or domain name not found

Genau das war das Problem. Während der Kommentator auf Superuser empfiehlt, postfix erst nach der erfolgreichen WiFi-Verbindung zu starten, löste ich das Problem anderweitig, indem ich einen Cron-Job einrichtete:

...
*/1 * * * *	root	cp /etc/resolv.conf /var/spool/postfix/etc/resolv.conf
...

Sicherlich nicht sexy, aber es löst das Problem (und schafft eventuell einige andere).

Tags: , , , , , , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen