Ich verwende Postfix für die endgültige Zustellung eines von mir geschriebenen Mailsystems. Diese Postfix-Installation akzeptiert also nur E-Mails von mir und schickt sie zurück. Wenn die Postfix-Warteschlange leer ist, kann sie eine E-Mail in etwa 5 ms annehmen. Wenn die Warteschlange etwa 150.000–200.000 Nachrichten enthält, ist die Übergabegeschwindigkeit von mir an Postfix sehr langsam, etwa 50–100, manchmal 500 ms.
Ich habe Protokollzeiten für jeden Teil der SMTP-Konversation, sodass ich sehen kann, wie viel Zeit vergeht. Ein Teil davon vergeht, wenn ich auf eine Antwort vom RCPT TO-Befehl warte, aber die überwiegende Mehrheit der Zeit vergeht, nachdem ich den letzten Punkt gesendet habe, bevor ich die Antwort „250 okay, in Warteschlange gestellt als ...“ erhalte.
Ich denke, die Verzögerung von RCPT TO liegt vielleicht an einer DNS-Suche, aber das hilft mir nicht bei der Wartezeit. Ich halte einen TCP-Socket für alle E-Mails, die ich versende, offen und setze die Konversation für jede Mail auf RSET, sodass keine Zeit durch das Herstellen und Trennen von TCP-Verbindungen verloren geht, sondern alles darauf wartet, dass Postfix die Nachricht in die Warteschlange stellt.
Alles, was ich über die Leistungsoptimierung von Postfix gelesen habe, hat mit Warteschlangenverwaltung und dem Senden von E-Mails für diese und jene Domäne hier und da zu tun. Aber ich bin in erster Linie daran interessiert, Postfix dazu zu bringen, die E-Mails schnell anzunehmen.
Gibt es eine Möglichkeit herauszufinden, was Postfix mit all dieser Zeit macht, oder gibt es eine Möglichkeit, es zu beschleunigen? Die Warteschlange /var/spool/postfix befindet sich auf der lokalen Festplatte, daher kann ich sie nicht beschleunigen.
Irgendwelche Vorschläge?
Antwort1
Legen Sie Folgendes fest inmain.cf
hash_queue_depth = 3
hash_queue_names = deferred, defer, incoming, active
Dadurch werden in den Eingangs- und Aktivwarteschlangen Unterverzeichnisse erstellt, damit die flachen Verzeichnisse nicht alle Mails auf einmal enthalten. Diese werden nun in Unterverzeichnisse verschoben.
Aber Achtung: Wenn 150k-200k Nachrichten auf die Zustellung warten, zeugt das von einem unglaublichen Missverständnis hinsichtlich des ausgewogenen Versands von Mails. Das sieht für mich nach Spamming aus...
Antwort2
Eine der Lösungen bestand darin, einen sekundären Mailserver einzurichten, der alle auf die Zustellung wartenden Bounces verarbeitet. Dies war die beste Lösung, um die Zustellung echter E-Mails aufrechtzuerhalten.
Antwort3
Dies ist eine sehr alte Frage, aber die Technologie hat sich nicht groß verändert bzw. die vorhandenen Antworten sind nicht sehr hilfreich.
Wenn die Warteschlange etwa 150.000 bis 200.000 Nachrichten enthält, ist die Übergabegeschwindigkeit von mir an Postfix sehr langsam
So wie diese Frage gestellt wird, scheint es, als beziehe sich der OP auf dieaktivWarteschlange hier (Postfix hat mehrere Warteschlangen). Und Postfix tut genau das, was es tun soll, um ein Ersticken zu verhindern. In der aktiven Warteschlange wird der ganze clevere Kram mit der Zustellungsplanung erledigt. Wenn sie zu groß wird, wird die Planung zum Engpass.
Wenn Sie lastbedingte Leistungsprobleme feststellen, empfiehlt es sich, die Last-, CPU- und E/A-Kennzahlen zu prüfen, um festzustellen, ob ein Hardware-Engpass vorliegt.
Wenn Sie ein Sende-Relay betreiben, verringert die Reduzierung der In_Flow_Delay-Zeit die Drosselung der Clients. Sie müssen jedoch die Größe der aktiven Warteschlange niedrig halten. Die Begrenzung der Rate, mit der Nachrichten von der eingehenden Warteschlange an die aktive Warteschlange weitergeleitet werden, kann hier hilfreich sein. Die beste Lösung besteht jedoch darin, Dinge schneller aus der aktiven Warteschlange zu entfernen. Das Beste, was Sie hier tun können, ist ein gutes Reputationsmanagement, schnelles DNS und, wenn möglich, die Verteilung des Sendens auf mehrere IP-Adressen. Die Reduzierung der Wiederholungshäufigkeit hilft auch bei der Rate, mit der die aktive Warteschlange gefüllt wird, und bei Anbietern, die die Annahme basierend auf der Häufigkeit der Verbindungsversuche begrenzen.
SPF, DMARC und DKIM (richtig konfiguriert) sollten als unverzichtbar angesehen werden.
Da jeder seine eigenen Mechanismen zum Umgang mit Spam erfindet, wird es immer Ausreißer geben – für die Sie benutzerdefinierte Transportmöglichkeiten einrichten müssen.