E-Mail-Versandgeschwindigkeit – So verbessern Sie sie

E-Mail-Versandgeschwindigkeit – So verbessern Sie sie

Ich betreibe einen Server zum Versenden von E-Mail-Mails (natürlich kein Spam). Die aktuelle Geschwindigkeit dieser Maschine beträgt ca. 2000 E-Mails pro Stunde.

(bearbeiten: Tatsächlich habe ich heute ein Testmailing durchgeführt, die Drosselung entfernt und ein Mailing an 2500 aktuelle und aktive Abonnenten gesendet. Der Versand dauerte ungefähr 1 Stunde und 45 Minuten.)

Mein Chef meinte, er sei damit nicht zufrieden, da er Unternehmen wie Mail Chimp und ähnliche gesehen habe, mit denen man innerhalb von ein paar Sekunden/Minuten Tausende von E-Mails verschicken könne. Und natürlich werden sie auch verschickt, da man sofort Antworten, Öffnungen usw. erhält.

Meine Frage ist, was genau ist erforderlich, um eine solche Sendegeschwindigkeit zu erreichen? Ich meine, natürlich können Sie die Hardware erweitern und ein immer komplexeres System von Servern aufbauen, die alle Ihre E-Mails usw. versenden. Und natürlich ist es auch wichtig, eine saubere Liste zu haben (keine unbekannten Hosts usw., da sie alle die Ressourcen des Servers beanspruchen).

Aber abgesehen davon bin ich sicher, dass es andere Möglichkeiten gibt, dies zu verbessern. Kann jemand einen Überblick darüber geben?

BEARBEITEN

Wie in den Kommentaren gewünscht, hier noch ein paar genauere Angaben zur verwendeten Hardware und zum Sendeverhalten:

Servertyp

Operating system: CentOS Linux 5.11
Kernel and CPU: Linux 2.6.18-400.1.1.el5 on i686
Processor: Intel Core2 Duo CPU E7500 @ 2.93GHz, 2 cores
CPU load averages: 1.07 (1 min) 1.18 (5 mins) 0.65 (15 mins)
CPU usage: 4% user, 1% kernel, 56% IO, 38% idle
Real memory: 1.49 GB used, 1.94 GB total
Virtual memory: 1.13 GB used, 3.91 GB total
Local disk space: 55.10 GB used, 219.71 GB total

MTA

Postfix version 2.3.3

Durchschnittliche Größe von E-Mails

Of the recent mailings, the largest one I found was just below 20k.
On average I can say it's probably between 8k and 10k per message.

verfügbare Bandbreite

30Mbit/s symmetrical

Festplattengeschwindigkeit

hdparm -t /dev/sda

    /dev/sda:
     Timing buffered disk reads:  336 MB in  3.01 seconds = 111.64 MB/sec

dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync

    16384+0 records in
    16384+0 records out
    1073741824 bytes (1.1 GB) copied, 23.9512 seconds, 44.8 MB/s

Messungen verschiedener Metriken

CPU load - see above

disk time - ???

RAM usage - see above

bandwidth usage - below data from "iftop -n" over a time period of ca. 5 minutes while sending mail.

    TX:      cum:  3.43MB   peak:  1.16Mb    rates:   5.36Kb  99.5Kb   137Kb
    RX:            1.01MB           120Kb             2.06Kb  38.0Kb  32.3Kb
    TOTAL:         4.44MB          1.28Mb             7.42Kb   137Kb   169Kb

Einige Maillog-Daten:

in case this is of value, here are a couple of lines from the maillog:

Mar  4 14:00:32 mailserver postfix/smtp[25768]: 6C419107802A: to=<[email protected]>, relay=mx.example.com[123.123.123.123]:25, delay=1.6, delays=0.05/0/0.14/1.4, dsn=2.0.0, status=sent (250 OK id=1YT8ud-0004fe-Rn)
Mar  4 14:00:32 mailserver postfix/qmgr[2806]: 6C419107802A: removed
Mar  4 14:00:32 mailserver amavis[26392]: (26392-01-46) lookup (score_sender), 1 matches for "[email protected]", results: "."=>[Amavis::Lookup::RE=ARRAY(0xaa7f358),HASH(0xac5f891)]
Mar  4 14:00:32 mailserver amavis[26392]: (26392-01-46) lookup_re("[email protected]"), no matches
Mar  4 14:00:32 mailserver amavis[26392]: (26392-01-46) query_keys: [email protected], myself@, mailserver.com, .mailserver.com, .com, .
Mar  4 14:00:32 mailserver amavis[26392]: (26392-01-46) lookup_hash([email protected]), no matches
Mar  4 14:00:32 mailserver amavis[26392]: (26392-01-46) lookup (score_sender<[email protected]>) => undef, "[email protected]" does not match
Mar  4 14:00:32 mailserver amavis[26392]: (26392-01-46) SpamControl: calling spam scanner
Mar  4 14:00:32 mailserver amavis[26392]: (26392-01-46) spam_scan: DSPAM not available, skipping it
Mar  4 14:00:32 mailserver amavis[26392]: (26392-01-46) timer set to 320 s for SA (was 480 s)
Mar  4 14:00:32 mailserver amavis[26392]: (26392-01-46) calling SA parse, SA version 3.2.5
Mar  4 14:00:33 mailserver amavis[26392]: (26392-01-46) CALLING SA check
Mar  4 14:00:33 mailserver postfix/smtp[25767]: A5341207802D: to=<[email protected]>, relay=mx.example.com[123.123.123.123]:25, delay=1.7, delays=0.15/0/0.14/1.4, dsn=2.0.0, status=sent (250 OK id=1YT8ue-0005BY-5x)
Mar  4 14:00:33 mailserver postfix/qmgr[2806]: A5341107802D: removed
Mar  4 14:00:34 mailserver postfix/smtp[25764]: C30371078144: to=<[email protected]>, relay=mx.example.com[123.123.123.123]:25, delay=1.8, delays=0.05/0/0.13/1.6, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued on mx.example.com as 1425474034-NECyl5JAc9-0Xx8wjwN)

Antwort1

Wenn ich selbst eine Mailingliste auf einem Postfix-Server betreibe, rechne ich damit, dass 2.000 Nachrichten mindestens einmal verarbeitet werden (d. h. sie werden möglicherweise zurückgestellt), bevor ich mit der Zubereitung einer Tasse Kaffee fertig bin.

Ihr System scheint Spam- und Virenscans auszuführen aufausgehendE-Mails. Während es eine gute Idee ist, eingehende E-Mails zu scannen, ist es wahrscheinlich keine so gute Idee, ausgehende E-Mails zu scannen, insbesondere wenn die Quelle dieser E-Mails bereits gut kontrolliert wird. Wir können sehen, dass dies die Zustellung jeder Nachricht um mehrere Sekunden verlängert und auch die E/A-Aufwands Ihrer Festplatte drastisch erhöht.

Ich würde Postfix so konfigurieren, dass ausgehende E-Mails nicht mehr gescannt werden. Wenn Sie ausgehende E-Mails normalerweise scannen müssen, z. B. für die Personen in Ihrem Büro, die E-Mails von ihren Computern senden, richten Sie einen dedizierten Mailserver ein, der speziell für die Verarbeitung des ausgehenden Mailinglistenverkehrs zuständig ist.

Antwort2

Ihr Problem ist die E/A-Geschwindigkeit, wie an der hohen CPU-Wartezeit zu erkennen ist. Dies kann zwei Ursachen haben:

  1. Die Postfix-Warteschlangenverwaltung ist reich an fsync() und stellt eine hohe IOPS-Belastung dar.
    Versuche dies:mounten Sie das Dateisystem, das die Warteschlange von Postfix hostet (normalerweise das Root-Dateisystem), erneut mit der Mount-Option „-o nobarrier“. WARNUNG: Dies sollte nur als Test betrachtet werden, da das Deaktivieren von E/A-Barrieren im Falle eines Stromausfalls und/oder Betriebssystemabsturzes zu Datenverlust führen kann.
  2. es scheint, dass Sie Amavis + und Spamassassin auch für ausgehende E-Mails verwenden. Obwohl dies (je nach Umgebung und deren Anforderungen) eine gute Sache sein kann, kann Spamassassin Ihren E-Mail-Durchsatz erheblich verringern.
    Versuche dies:in amavisd.conf so einstellen, $sa_local_tests_only = 1dass alle netzwerkabhängigen Tests ausgeschlossen werden und $sa_mail_body_size_limit = 32*1024der von Spamassassin zu scannende Body-Teil reduziert wird.

Probieren Sie die oben genannten Vorschläge nacheinander aus und führen Sie jedes Mal einen Benchmark Ihres Systems durch. Teilen Sie uns anschließend die Ergebnisse mit.

Antwort3

Hallo, Sie brauchen kein Postfix !!!!

Sie müssen eine Multithread-Anwendung zum Senden von E-Mails schreiben (C++, C#, NetCore oder Java).

  • Newsletter-E-Mails in einer MySQL-Datenbank speichern

  • Holen Sie sich eine Liste mit MX-Einträgen für jede E-Mail-Adresse aus Ihrer Datenbank

  • Senden Sie E-Mails aus dieser Liste an SMTP-Server (Hostnamen) (immer über Port 25).

Anschließend können Sie Apps ausführen und von einer oder mehreren IP-Adressen eines VPS-Servers senden.

Oder Sie können versuchen, E-Mails von mehreren IP-Adressen von Postfix zu senden!!!

Sie können C# oder Java Mail SMTP-Client verwenden

verwandte Informationen