Postfix-Leistung mit Listen in main.cf

Postfix-Leistung mit Listen in main.cf

Um eine Liste von Elementen zu definieren, die in Postfix vielen verschiedenen Optionen zugewiesen werden sollen, können Sie entweder eine durch Kommas getrennte Liste wie die folgende verwenden:

relay_domains = example.com,example.net,example.org

oder eine Hash-Map wie diese:

relay_domains = hash:/etc/postfix/relay_domains

und verwenden Sie dann Postmap, um diese Datei mit Schlüssel-Wert-Elementen in eine BDB-Datei zu konvertieren.

Meine Frage lautet: Gibt es aus Leistungsgründen Gründe, die Hash-Map zu verwenden, anstatt einfach die Liste anzugeben?

Antwort1

Ich habe weder Daten noch Messwerte, um zu entscheiden, ob die Leistung in beiden Fällen eine Rolle spielt. Ich werde versuchen zu erklären, welcher Hintergrundprozess in diesen beiden Fällen eine Rolle spielt.

Als der Postfix-Daemon ausgeführt wurde, gab es zwischen den beiden kaum einen Unterschied, weil:

  • Bei der Verwendung main.cfanalysiert Postfix die Konfigurationsdatei, speichert sie im Speicher und überprüft die Datei erst erneut, wenn Postfix neu gestartet wird oder der Administrator einen postfix reloadBefehl eingibt.
  • Bei Verwendung einer Hash-Tabelle analysiert Postfix die Tabelle, speichert sie im Speicher UND prüft regelmäßig, ob sich die Datei geändert hat. Wenn die Datenbank geändert wurde, wird Postfix beendet, bevor die nächste Client-Anforderung bearbeitet wird, sodass ein neuer Prozess mit der neuen Datenbank initialisiert werden kann.Quelle

Wenn Sie nun die Liste ändern möchten, dann

  • Nach dem Ändern main.cfsollten Sie aufrufen postfix reload. Dadurch wird der Master-Daemon gezwungen, die Konfigurationsdatei erneut zu lesen und den untergeordneten Prozess zu beenden, damit dieser die neue Konfiguration übernehmen kann.Quelle
  • Nach dem Ändern der Hash-Tabelle ist kein Aufruf mehr erforderlich postfix reload.

Ich verstehe immer noch nicht den Unterschied zwischen (1) dem Neustart des untergeordneten Prozesses durch manuelles Aufrufen postfix reloadund (2) dem Neustart des untergeordneten Prozesses, der durch eine Änderung der Hash-Tabelle ausgelöst wird.

Hier einige Erkenntnisse nach der Lektüre derPostfix-Handbuchseite, insbesondere aufDaemons-ProzessAbschnitt. Dadurch verstehe ich den Unterschied zwischen (1) dem Neustarten des untergeordneten Prozesses durch manuelle Aufrufe postfix reloadund (2) dem Neustarten des untergeordneten Prozesses, der durch eine geänderte Hash-Tabelle ausgelöst wird.

Postfix hat den Masterprozess namensMeister. Es wird zum ersten Mal aufgerufen und dient als „Master“-Programm. Es ruft bei Bedarf andere Daemons wie smtpd, qmgr und trivial-rewrite auf.

Es gibt vier Arten von Postfix-Daemons

  1. Der Daemon, der nicht stirbt, also Änderungen an main.cf nicht automatisch übernimmt. Wird er postfix reloadnach einer Konfigurationsänderung aufgerufen, liest der Prozess die Datei erneut. Dazu gehören:Meister.
  2. Der Daemon wurde zum persistenten Prozess, sodass er Änderungen an main.cf nicht automatisch übernimmt. Wird er postfix reloadnach einer Konfigurationsänderung aufgerufen, liest der Prozess die Datei erneut. Dazu gehören:qmgr,tlsmgr,verifizieren.
  3. Der lang andauernde Prozess kann zwischen einer Stunde und mehreren Stunden dauern. Das Aufrufen postfix reloadnach einer Konfigurationsänderung beschleunigt die Konfigurationsänderung. Dazu gehören:trivial umschreiben,abholen,nach dem Screenen,Proxy-Karte
  4. Der kurz laufende Prozess, der nur für eine begrenzte Zeit ausgeführt wird. Ein Aufruf postfix reloadist unnötig, da der Prozess main.cf beim erneuten Ausführen erneut liest. Dies umfasstSMTP,smtpd,lokalund andere Prozesse neben den drei oben genannten Kategorien.

main.cfWenn Sie zum Speichern der Listen verwenden, aber nicht invoke postfix reload, dann

  • Daemons der Kategorie 4 werden es aufgrund seines geringen Alters sofort nach der Wiederbelebung des Prozesses aufgreifen.
  • Daemonen der Kategorie 3 brauchen etwas Zeit, um ihre Wirkung zu entfalten
  • Daemons der Kategorien 1 und 2 lesen nie erneut, main.cfbis Sie Folgendes aufrufen postfix reload:

Wenn Sie eine Hash-Tabelle zum Speichern der Listen verwenden und postmapdie Datei mit -ed versehen haben, dann

  • Daemons der Kategorien 2, 3 und 4 erkennen die Dateiänderungen. Ein erneutes Laden des Postfixes ist daher nicht erforderlich.
  • Daemon Kategorie 1 hat keinen Hash-Typ-Parameterwert. Daher hat er keine Auswirkung auf den Master-Daemon.

Abschluss

Ansonsten scheint der Leistungsunterschied zwischen den beiden obigen Fällen gering zu sein. Wenn Sie die Tabelle selten ändern, kann der Unterschied vernachlässigt werden. Die Ausnahme ist, wenn Sie postfix reloaddie Hash-Tabelle häufig bearbeiten oder ändern, dann wird dies zu Leistungsproblemen führen qmgr. SieheHierUndHier

Weitere Informationen:Readme zur Postfix-Leistung

verwandte Informationen