Postfix a NFS


Link: http://www.postfix.org/NFS_README.html

Postfix stav NFS podpora

Jaký jestav podpory pro Postfixu na NFS ? Odpověď je, že Postfix sám o sobě je podporován při použití souborového systému NFS , ale není tam žádný slib , žeNFS související problém bude okamžitě obdrží Postfix řešení , nebo žeřešení bude ještě možné .

To znamená, že Postfix bude v mnoha případech funguje velmi dobře na NFS , protože Postfix implementuje řadu řešení ( viz níže) . Dobrý implementace NFS zřídka , pokud vůbec , aby problémy s Postfixu , takže Wietse doporučuje utratit své peníze moudře .
Postfix zamykání souborů a NFS

Pro fronty Postfixu , nezáleží na tom, jak dobře souboru NFS zamykání práce . Důvodem je, že nemůžete sdílet Postfixu fronty mezi více spuštěné instance Postfixu . Můžete použít NFS přepnout Postfix frontu od jednoho klienta NFS k druhému, ale jen jeden NFS klient může přistupovat k Postfixu frontu v určitém okamžiku v čase .

U souboru poštovní schránky sdílení s NFS , vaše možnosti jsou k použití fcntl ( Ústřední jádro ) , dotlock ( username.lock souborů ) , používat oba zajišťovací způsoby současně , nebo přepnout do formátu maildir . Formát maildir používá jeden soubor za zprávy a nepotřebuje soubor zamykání podporu v Postfixu nebo v jiném poštovním programu .

Mnoho stránek , které používají formát schránky hrát bezpečné a použít obě zamykání metod současně .

/etc/postfix/main.cf:
    virtual_mailbox_lock = fcntl, dotlock
    mailbox_delivery_lock = fcntl, dotlock

Řešení Postfix NFS

Níže uvedený seznam shrnuje řešení, které existují pro spuštění Postfixu na NFS od poloviny roku 2003 . Jako připomínka , Postfix sám je stále podporována , když to běží na NFS , ale není tam žádný slib , žeNFS související problém bude okamžitě obdrží Postfix řešení , nebo žeřešení bude ještě možné .

  • Problém : Při přejmenování souboru , můžeoperace úspěšná, ale hlásí chybu tak jako tak [ 1 ] .
  • Řešení : Při přejmenování ( starý , nový ) hlásí chybu , Postfix zkontroluje, zdanový název existuje istarý název je pryč . Je-likontrola úspěšná , Postfix předpokládá, žeoperace přejmenování ( ) bylo dokončeno normálně .
  • Problém : Při vytváření adresáře , můžeoperace úspěšná, ale hlásí chybu tak jako tak [ 1 ] .
  • Řešení : Při mkdir ( nový ) hlásí chybu EEXIST , Postfix zkontroluje, zdanový název překládá do adresáře . Je-likontrola úspěšná , Postfix předpokládá, žeoperace mkdir ( ) bylo dokončeno normálně .
  • Problém : Při vytváření HardLink do souboru , můžeoperace úspěšná, ale hlásí chybu tak jako tak [ 1 ] .
  • Řešení : Při odkaz ( starý , nový ) selže , Postfix porovnává zařízení a inode počet starých a nových souborů . Když se dva soubory jsou identické , Postfix předpokládá, ževztah ( ) operace dokončena normálně .
  • Problém : Při vytváření dotlock souborů ( username.lock ) , můžeoperace úspěšná, ale hlásí chybu tak jako tak [ 1 ] .
  • Řešení : V tomto případě jejediným bezpečným akce je zpět a zkuste to znovu později .
  • Problém : Když je soubor serveru ” denní doba ” hodiny nejsou synchronizovány s klientem je ” denní doby ” hodin , e-mail dodávky jsou zpožděné o minutu nebo více .
  • Řešení : Postfix výslovně stanoví časová razítka souborů , aby se zabránilo průtahům s novou poštu ( Postfix používá ” Naposledy upraveno ” časová razítka souborů rozhodnout, kdysoubor fronta je připraven k dodání ) .

[ 1 ] Jak jeoperace úspěšná a nahlásit chybu vlastně je?

Předpokládejme, žeNFS server provádí požadavek klienta úspěšně , a že odpověď serveru na klienta, je ztracen . Po určité době, kdy klient odešle požadavek na server . Za normálních okolností , server si pamatuje , že již dokončil žádost ( udržuje seznam nedávno dokončených žádostí a odpovědí ) , a jednoduše odešle odpověď .

Nicméně, kdyžserver restartován nebo kdy to bylo velmi zaneprázdněn ,server již pamatuje , že již dokončil žádost , a opakuje operaci . To způsobí, že žádné problémy s čtení souboru / žádosti o zápis ( musí obsahovat soubor offset a proto může být opakované bezpečně ) , ale nedokáže s non – idempotentních operací . Například , když se server spustí vysílaných přejmenování ( ) požadavek ,server hlásí chybu ENOENT , protožestarý název neexistuje , a když se server spustí vysílaných spojení ( ) , mkdir ( ) nebo Vytvořit (v ) požadavek , server hlásí chybu EEXIST , protože tento název již existuje .

Tak úspěšný , non – idempotentní , operace NFS bude hlásit falešné chyby, když jeodpověď serveru ztratil ,klient odešle požadavek a server si nepamatuje , že již dokončil žádost .