Zum Inhalt springen

Postfix/BerkeleyDB: Unterschied zwischen den Versionen

Aus Foxwiki
Die 5 zuletzt angesehenen Seiten:  IPv6/Multicast Addressen » load average » tree » IPv6/Neighbor/Windows » Postfix/BerkeleyDB
K Textersetzung - „““ durch „"“
K Textersetzung - „http://“ durch „https://“
Zeile 4: Zeile 4:


Darüber hinaus würde das Sperren von Dateien keine Probleme verhindern, wenn die Update schlägt fehl, weil die Festplatte voll ist oder etwas anderes verursacht a Datenbankaktualisierung fehlschlägt.  
Darüber hinaus würde das Sperren von Dateien keine Probleme verhindern, wenn die Update schlägt fehl, weil die Festplatte voll ist oder etwas anderes verursacht a Datenbankaktualisierung fehlschlägt.  
* Insbesondere Befehle wie [http://www.postfix.org/postmap.1.html postmap(1)] oder [http://www.postfix.org/postalias.1.html postalias(1)] vorhandene Dateien überschreiben.  
* Insbesondere Befehle wie [https://www.postfix.org/postmap.1.html postmap(1)] oder [https://www.postfix.org/postalias.1.html postalias(1)] vorhandene Dateien überschreiben.  
* Wenn das überschreiben Scheitert mittendrin dann hast du keine brauchbare Datenbank und Postfix wird aufhören zu arbeiten.  
* Wenn das überschreiben Scheitert mittendrin dann hast du keine brauchbare Datenbank und Postfix wird aufhören zu arbeiten.  
* Dies ist kein Problem mit dem CDB-Datenbanktyp ab Postfix 2.2 verfügbar: [http://www.postfix.org/CDB_README.html CDB] erstellt eine neue Datei und benennt die Datei nach erfolgreichem Abschluss um.  
* Dies ist kein Problem mit dem CDB-Datenbanktyp ab Postfix 2.2 verfügbar: [https://www.postfix.org/CDB_README.html CDB] erstellt eine neue Datei und benennt die Datei nach erfolgreichem Abschluss um.  


Bei Berkeley DB und anderen "Ein-Datei"-Datenbanken ist es das Es ist möglich, zusätzliche Robustheit hinzuzufügen, indem Sie "mv" für REPLACE an verwenden vorhandene Datenbankdatei, anstatt sie zu überschreiben:  
Bei Berkeley DB und anderen "Ein-Datei"-Datenbanken ist es das Es ist möglich, zusätzliche Robustheit hinzuzufügen, indem Sie "mv" für REPLACE an verwenden vorhandene Datenbankdatei, anstatt sie zu überschreiben:  
Zeile 12: Zeile 12:
  # postmap access.in && mv access.in.db access.db   
  # postmap access.in && mv access.in.db access.db   


Dadurch wird die Eingabedatei "access.in" in die Ausgabedatei umgewandelt "access.in.db" und ersetzt die Datei "access.db" nur dann, wenn die [http://www.postfix.org/postmap.1.html postmap(1)] -Befehl war erfolgreich.  
Dadurch wird die Eingabedatei "access.in" in die Ausgabedatei umgewandelt "access.in.db" und ersetzt die Datei "access.db" nur dann, wenn die [https://www.postfix.org/postmap.1.html postmap(1)] -Befehl war erfolgreich.  
* Natürlich solche Befehle eingeben wird schnell langweilig, und deshalb verwenden die Leute stattdessen "make", Wie nachfolgend dargestellt.  
* Natürlich solche Befehle eingeben wird schnell langweilig, und deshalb verwenden die Leute stattdessen "make", Wie nachfolgend dargestellt.  
* Benutzereingaben werden fett dargestellt.  
* Benutzereingaben werden fett dargestellt.  
Zeile 20: Zeile 20:


   # Hinweis 1: Befehle werden nach einem TAB-Zeichen angegeben.   
   # Hinweis 1: Befehle werden nach einem TAB-Zeichen angegeben.   
   # Anmerkung 2: Verwenden  [http://www.postfix.org/postalias.1.html Sie postalias(1)] für lokale Aliase, [http://www.postfix.org/postmap.1.html postmap(1)] für den Rest.  
   # Anmerkung 2: Verwenden  [https://www.postfix.org/postalias.1.html Sie postalias(1)] für lokale Aliase, [https://www.postfix.org/postmap.1.html postmap(1)] für den Rest.  
  aliases.db: aliases.in  
  aliases.db: aliases.in  
         Postalias aliases.in  
         Postalias aliases.in  

Version vom 7. April 2025, 14:46 Uhr

Berkeley DB-Dateien sicher aktualisieren

Postfix verwendet Dateisperren, um Zugriffskonflikte zu vermeiden Aktualisieren von Berkeley DB oder anderen lokalen Datenbankdateien.

  • Früher war das so sicher sein, aber wie Berkeley DB entwickelt hat, um aggressiver zu verwenden Caching, Dateisperrung möglicherweise nicht mehr ausreichend.

Darüber hinaus würde das Sperren von Dateien keine Probleme verhindern, wenn die Update schlägt fehl, weil die Festplatte voll ist oder etwas anderes verursacht a Datenbankaktualisierung fehlschlägt.

  • Insbesondere Befehle wie postmap(1) oder postalias(1) vorhandene Dateien überschreiben.
  • Wenn das überschreiben Scheitert mittendrin dann hast du keine brauchbare Datenbank und Postfix wird aufhören zu arbeiten.
  • Dies ist kein Problem mit dem CDB-Datenbanktyp ab Postfix 2.2 verfügbar: CDB erstellt eine neue Datei und benennt die Datei nach erfolgreichem Abschluss um.

Bei Berkeley DB und anderen "Ein-Datei"-Datenbanken ist es das Es ist möglich, zusätzliche Robustheit hinzuzufügen, indem Sie "mv" für REPLACE an verwenden vorhandene Datenbankdatei, anstatt sie zu überschreiben:

# postmap access.in && mv access.in.db access.db  

Dadurch wird die Eingabedatei "access.in" in die Ausgabedatei umgewandelt "access.in.db" und ersetzt die Datei "access.db" nur dann, wenn die postmap(1) -Befehl war erfolgreich.

  • Natürlich solche Befehle eingeben wird schnell langweilig, und deshalb verwenden die Leute stattdessen "make", Wie nachfolgend dargestellt.
  • Benutzereingaben werden fett dargestellt.
# cat Makefile  
all: aliases.db access.db virtual.db ...usw.... 
 # Hinweis 1: Befehle werden nach einem TAB-Zeichen angegeben.  
 # Anmerkung 2: Verwenden  Sie postalias(1) für lokale Aliase, postmap(1) für den Rest. 
aliases.db: aliases.in 
        Postalias aliases.in 
        mv aliases.in.db aliases.db 
access.db: access.in 
        postmap-Zugriff.in 
        mv access.in.db access.db 
virtual.db: virtual.in 
        postmap virtual.in 
        mv virtual.in.db virtual.db 
...und so weiter... 
 # vi access.in  
...Bearbeitungssitzung nicht angezeigt... 
 # machen  
postmap-Zugriff.in 
mv access.in.db access.db 
 #  

Der Befehl "make" aktualisiert nur die Dateien, die sich geändert haben.

  • Im Falle eines Fehlers stoppt der Befehl "make" und wird nicht aufgerufen den "mv"-Befehl, damit Postfix die vorhandene weiterhin verwendet Datenbankdatei, als ob nichts passiert wäre.