Instalace majordoma pro sendmail
Submitted by admin on Thu, 2000-01-06 13:48.
Majordomo
1.94
Pro informování našich zástupců jsem potřeboval nainstalovat nějaký systém pro rozesílání mailů a SMSek na určitou skupinu adres. Vytvoření aliasů pro sendmail jsem zavrhnul, protože bych se pak sám musel starat o aktualizace souboru etc/aliases. Pomocí majordoma by se o zařazování a vyhazování z mail seznamu starala jiná osoba bez nutnosti mít přístup jako root (a vůbec hrabat se na serveru). Správu se bude provádět přes posílání mailů majordomovi. Majordom jako rpm je např. na adrese http://ftp.ms.cuni.cz. Po stáhnutí souboru se provede rpm -i majordomo-1.94.1-4.i386.rpm. Program se nainstaluje do /usr/lib/majordomo/, /usr/man/majordomo/, /usr/doc/majordomo/. Poté je potřeba vytvořit skupinu majordom, uživatele majordom (adduser majordom) a adresáře podle /etc/majordomo.cf (/var/lib/majordomo/archive, /var/lib/majordomo/digest, /var/lib/majordomo/lists,/var/log/majordomo), soubor /var/log/majordomo/majordomo.log (touch var/log/majordomo/majordomo.log). Jako vlastnika všech nainstalovaných a vytvořených souborů a adresářů nastavit na majordom, skupina majordom. Nastavit chmod /usr/lib/majordomo (770), /var/lib/majordomo (750), /var/lib/majordomo/lists (770!), /var/lib/majordomo/archive (770!), /var/lib/majordomo/digest (770), /var/log/majordomo (774). Dále je třeba upravit senmailový soubor /etc/aliases. Příklad:
Majordomo
1.94
Pro informování našich zástupců jsem potřeboval nainstalovat nějaký systém pro rozesílání mailů a SMSek na určitou skupinu adres. Vytvoření aliasů pro sendmail jsem zavrhnul, protože bych se pak sám musel starat o aktualizace souboru etc/aliases. Pomocí majordoma by se o zařazování a vyhazování z mail seznamu starala jiná osoba bez nutnosti mít přístup jako root (a vůbec hrabat se na serveru). Správu se bude provádět přes posílání mailů majordomovi. Majordom jako rpm je např. na adrese http://ftp.ms.cuni.cz. Po stáhnutí souboru se provede rpm -i majordomo-1.94.1-4.i386.rpm. Program se nainstaluje do /usr/lib/majordomo/, /usr/man/majordomo/, /usr/doc/majordomo/. Poté je potřeba vytvořit skupinu majordom, uživatele majordom (adduser majordom) a adresáře podle /etc/majordomo.cf (/var/lib/majordomo/archive, /var/lib/majordomo/digest, /var/lib/majordomo/lists,/var/log/majordomo), soubor /var/log/majordomo/majordomo.log (touch var/log/majordomo/majordomo.log). Jako vlastnika všech nainstalovaných a vytvořených souborů a adresářů nastavit na majordom, skupina majordom. Nastavit chmod /usr/lib/majordomo (770), /var/lib/majordomo (750), /var/lib/majordomo/lists (770!), /var/lib/majordomo/archive (770!), /var/lib/majordomo/digest (770), /var/log/majordomo (774). Dále je třeba upravit senmailový soubor /etc/aliases. Příklad:
# obecne pro majordoma majordomo: |"usr/lib/majordomo/wrapper majordomo" owner-majordomo: majordomo-owner majordomo-owner: majordom majordom: joe
# pro kazdy maillist tady "novinky" novinky: "|/usr/lib/majordomo/wrapper resend -p bulk -M 10000 -l novinky -f novinky-owner -h vase-domena.cz -s novinky-outgoing" novinky-owner: owner-novinky novinky-outgoing: :include:/var/lib/majordomo/lists/novinky, novinky-archive novinky-archive: /var/lib/majordomo/archive/novinky novinky-request: "|/usr/lib/majordomo/wrapper request-answer novinky" novinky-digest: novinky novinky-approval: novinky-owner owner-novinky-digest:novinky-owner owner-novinky-request: novinky-owner owner-novinky-digest-outgoing:novinky-owner owner-novinky: bill,Program funguje tak, že se posílá mail na speciální adresy. Přihlašování, odhlašování apod. na "majordomo@vase-adresa.cz", příspěvky na "novinky@vase-adresa.cz". Sendmail pro příchozí mail spustí program /usr/lib/majordomo/wrapper, který ho dál zpracuje (buď si odchytí řídící příkazy např. subscribe, unsubscribe, lists, apod.) nebo rozesílá mail na zaregistrované adresy (novinky-outgoing, sendmail natáhne adresy ze seznamu udržovaného majordomem :include:/var/lib/majordomo/lists/novinky a uloží do archívu /var/lib/majordomo/archive/novinky). Pokud se žádá něco od majordoma (např. lists) tak ty jsou směrovány na novinky-request, novinky-approval je pro moderátora maillistu. Tady nastávají problémy s právy. Sendmail běží většinou jako "mail/mail" (nastavuje se v etc/sendmail.cf O DefaultUser=UID:GID). Musí mít tedy právo spouštět /usr/lib/majordomo/wrapper, který další zpracování provádí už jako "majordom/majordom" (logování, údržbu /var/lib/majordomo/lists/novinky, lockování /usr/lib/majordomo/, apod.). Spuštění ./wrapper config-test majordomo z /usr/lib/majordomo. Perlový program vypíše problémy. V manuálu radí spustit ne jako "root" nebo "majordom", ale mě dával lepší výsledky z "root"a než jako normální uživatel. Nejlepší by bylo ho spustit jako "mail". Po odstranění zobrazených chyb (nejsou 100%) přistoupíme k rozchození aliasů sendmailu. Posláním mailu na majordomo@vase-domena.cz otestujeme co se stane. Mě se vytrvale vracela hláška sh: wrapper not available for sendmail program 554 "|/usr/lib/majordomo/wrapper majordomo" ... service unavailable Po hodinách zkoumání práv a prohledání webu jsem narazil na vysvětlení, že sendmail spouští bezpečný shell "smrsh". Všechny soubory, které má spustit se musí uložit jejich symbolické linky do urs/adm/sm.bin (nebo /etc/smrsh). Po vložení linku /etc/smrsh/@wrapper->usr/lib/majordomo/wrapper je to ok. Podobný případ je pří zapisování do archívu /var/lib/majordomo/archive/novinky (udělat link /etc/smrsh/@archive-novinky->/var/lib/majordomo/archive/novinky). Nyní by mělo jít zadat povel majordomovi "subscribe novinky". A zkusit poslat zkušební zprávu na "novinky". Teďko se pro změnu vrací chyba "Group writable directory" znamenající, že sendmail nepoužije z bezpečnostních důvodů include, protože chmod má nastavený skupinový write. Je nutno buď předělat vlastníky, práva nebo v /etc/sendmail.cf nastavit "O UnsafeGroupWrites=False", "O DontBlameSendmail=groupwritabledirpathsafe,includefileinunsafedirpath, includefileinunsafedirpathsafe" a restartovat sendmail). Teď ještě chvíli vzdoroval hláškou "Permision denied" a pak se rozběhl a běží.