QMAIL - přechod na Maildir a instalace kompletního poštovního systému

V tomto článku popíši přechod QMailu na ukládání zpráv pomocí Maildiru a s tím související úpravy celého systému. Vrhneme se zde na instalaci několika rozšiřujících modulů právě pro systém Maildiru, popíšeme si instalaci Courier-IMAP balíku, který umožňuje přístup k vašim zprávám pomocí POP3 a IMAP služeb, dále Qmail-pop3 server, jenž je součástí QMailu, vpopmail, což je rozšíření QMailu pro správu virtuálních domén a nakonec si ukážeme webové rozhraní sqwebmail. Po instalaci byste měli dostat plnohodnotný poštovní systém s ukládáním zpráv do nového Maildiru, s POP3, POP3S, IMAP, IMAPS a HTTP službami pro přístup k vašim zprávám a se seznamem vašich uživatelských účtů v databázi MySQL .

Několik slov úvodem:

Maildir
Maildir je nový systém ukládání zpráv. Qmail vám ho však nikterak nevnucuje, můžete klidně používat osvědčený mailbox.
Maildir umožňuje například sdílení mailboxu přes síťové souborové systémy (například NFS), kdy není dostatečně zaručeno že se schránkou nebude pracovat více uživatelů najednou. Maildir toto riziko řeší pomocí lock souborů, jenž schránku zamknou tak aby ji mohl používat jen jeden uživatel a nedošlo tak ke ztrátě dat. Maildir také přímo podporuje výboroný MUA mutt, nebo velmi bezpečný qmail-pop3d. Bohužel s Maildirem neumí zacházet značné množství poštovních klientů, avšak na většinu z nich se dá aplikovat příslušný patch, který podporu pro Maildir dodá.

Budeme předpokládat, že chceme používat autorizaci pro systémové i nesystémové uživatele pomocí údajů zanesených do databáze MySQL a schránky budeme chtít mít v jednom centrálním adresáři a ne v kořenu každého uživatele.
Předpokládejme také, že již máte nainstalován tcpserver z balíku ucspi-tcp, ukončeny všechny služby SMTP, POP3, IMAP, IMAPS a nastaveny symbolické linky z /usr/sbin/sendmail na /var/qmail/bin/sendmail jak bylo zmíněno v prvním článku.

Budu zde vycházet z konfigurace systému, kterou jsme skončili v druhém článku povídání o QMailu "QMAIL - instalace a konfigurace, dokončení".

Použité balíky:


Tedy začněmě:

Úprava QMailu pro ukládání do Maildiru


  1. Spouštěcí skript /var/qmail/rc musí místo Mailbox obsahovat ./Maildir/
  2. Maildir se vytváří pomocí /var/qmail/bin/maildirmake ~user/Maildir - a musíte být přihlášeni pod tím daným userem kvůli právům. Stávající ~user/Mailbox a /var/spool/mail/user soubory můžete smazat.

Qmail-smtpd - Spuštění SMTP služby Qmailu

Pokud máte nainstalován tcpserver spustíme její instanci, která bude spouštět program qmail-smtpd při každém připojení k portu 25. Pomocí souboru tcp.smtp budeme zakazovat/povolovat přístup ke službě selekcí ip adresy.


  1. Vytvoříme adresář /etc/tcprules.d a soubor tcp.smtp
    # mdir /etc/tcprules.d
    # touch /etc/tcprules.d/tcp.smtp

  2. Do souboru tcp.smtp zadáme všechny počítače které chceme povolit a zakážeme zbývající
    127.0.0.1:allow,RELAYCLIENT=""
    192.168.1.:allow,RELAYCLIENT=""
    192.168.2.1:allow,RELAYCLIENT=""
    :deny


  3. Soubor musíme vždy převést do syrového formátu pomocí
    # tcprules /etc/tcprules.d/tcp.smtp.cdb /etc/tcprules.d/tcp.smtp.tmp < /etc/tcprules.d/tcp.smtp   

  4. Nyní můžeme spustit tcpserver
    # tcpserver -x /etc/tcprules.d/tcp.smtp.cdb -u 508 -g 507 0 smtp /var/qmail/bin/qmail-smtpd &
    kde 508 je uid <qmaild> uživatele a 507 je gid <nofiles> skupiny.

vpopmail

vpopmail je nadstavba QMailu pro automatizovanou správu virtuálních domén a uživatelů QMailu.
vpopmail dělí emailové adresy podle domény do dvou hlavních skupin:

  1. lokální - pro domény v /var/qmail/control/locals - autorizuje uživatele pomocí systémových pravidel
  2. virtuální - v souboru /var/qmail/control/virtualdomains - bere informace o doméně z /var/qmail/users/assign a z MySQL tabulky.

Instalace:

# groupadd vchkpw
# useradd -g vchkpw vpopmail -d /var/vpopmail

Jelikož budeme používat databázi MySQL pro ukládání informací o jednotlivých účtech, musíme pozměnit následující řádky týkající se přístupu k naší databázi v souboru vmysql.h:

#define MYSQL_XX_SERVER "localhost"
#define MYSQL_XX_USER "root"
#define MYSQL_XX_PASSWD "yyyyy"

POZN.: Uživatel musí mít schopnost vytvářet nové databáze a tabulky v MySQL.

# ./configure --enable-mysql=y --enable-default-domain=<domain_name>
# make
# make install-strip

Volba enable-default-domain umožní uživatelům defaultní domény přihlašovat se jako <user> i jako <user>%<virtualdomain>. Přihlašovací jméno virtuálního uživatele ostatních domén musí vždy vypadat takto: <user>%<virtualdomain> (tonda@virt_domena.cz).
Pokud uživatel použije pouze <user>, vpopmail bude uživatele porovnávat buď s /etc/passwd nebo ho bude brát jako uživatele defaultní domény.

Vytváření domén a uživatelů:

Nejprve vytvoříme defaultní doménu:
# vadddomain primarni_domena.cz (přibyde záznam v /var/qmail/control/virtualdomains, ubyde doména z /var/qmail/control/locals, přibyde záznam v /var/qmail/users/assign a v MySQL by měla být nová dbáze vpopmail s tabulkami vpopmail a dir_control)

Přidáme systémové uživatele:
# vadduser syst_uzivatel@primarni_domena.cz

a přidáme i nového nesystémového:
# vadduser vitrual@primarni_domena.cz


POZN.: Do souboru /var/qmail/users/assign je třeba před vytvářením uživatelů či domén umístit tečku a nový řádek, jinak příkazy vadddomain a vadduser prostě nerozchodíte !

Všechny emailové schránky dané domény se nyní nacházejí v adresáři /var/vpopmail/domains/primarni_domena/
Soubor /var/vpopmail/domain/<domena>/.qmail-default se stará o dosílání zprávy danému uživateli ve virtuální doméně, využívá program vdelivermail.
Pro spravné zasílání zpráv odeslaných některými lokálními roboty, je vhodné umístit do adresáře /var/vpopmail/domain/<domena> soubory .qmail-root a .qmail-mailer-daemon s řádkou definující uživatele, kterému má být zpráva přeposlána.


Qmail-pop3d - POP3 služba (doporučuji použít spíše Courier-IMAP server)


Funguje tak, že pomocí inetd či tcpserver je spuštěn qmail-popup který čeká na spojení na portu 110. Když je spojení navázáno, dotáže se uživatele na jméno a heslo a pomocí vchkpw modulu ověří zadané uživatelské jméno/heslo. Pokud je autorizace v pořádku, spustí qmail-pop3d, který se stará o další komunikaci s uživatelem.

Co bude třeba:

Co je co:

    qmail-popup - získává username/password
    vchkpw - ověřuje správnost username/password (součást vpopmailu)
    qmail-pop3d - POP daemon

Nyní spustíme POP3 demona pomoci tcpserveru:

    # /usr/local/bin/tcpserver 0 110 /var/qmail/bin/qmail-popup poweroff.rp \
    /var/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &

Tímto se nám spustí další instance tcpserveru, která spustí qmail-popup vždy při přístupu k portu 110.

Courier-IMAP - IMAP, IMAPS, POP3 a POP3S v jednom balíku

Balíček courier-imap umožňuje zprovoznění služeb POP3 a IMAP včetně zabezpečených POP3S (port 995) a IMAPS (port 993). Při instalaci zjišťuje jestli máte nainstalován vpopmail a pokud ano tak přikompiluje authvchkpw autentizační modul.

Co je důležité, konfiguraci musíte provádět jako běžný uživatel, pokud jste již z roota rozbalili archiv, nerozchodíte to.
Firma Inter7 (tvůrce vpopmailu) také na svých stránkách doporučuje přepsat soubor <courier source>/authlib/preauthvchkpw.c opraveným souborem odsud.

The POP3 server může stahovat zprávy pouze z adresáře INBOX, do jiných adresářů nemůže.
Courier-IMAP také zamezuje vícenásobné připojení ze stejné IP, což zamezuje Denial-of-Service útokům, ale někdy se může jevit jako nevhodné zvláště když na klientovi máte 2 účty a bleskurychle mezi nimi přeskakujete. Počet připojení ze stejné IP je v proměnné MAXPERIP, defaultně nastavené na 4, a to v souborech /var/courier-imap/etc/imapd(-ssl) a pop3d(-ssl).

Konfigurace:

$ ./configure --prefix=/var/courier-imap
$ make
(je třeba nastavit přístup uživatele ke knihovně /var/vpopmail/lib/libvpopmail.a)  
$ make check

$ su root
# make install
# make install-configure

Pak je nutné zvolit správnou autentizační knihovnu pro váš systém, tzn. pro nás authvchkpw, která je automaticky přikompilována
a spustit
# /var/courier-imap/libexec/authlib/authdaemond start

IMAP spustíte
# /var/courier-imap/libexec/imapd.rc start

A pokud chcete mít IMAP šifrován pomocí SSL, tak nejdříve vytvořte certifikát pomocí # /usr/lib/courier-imap/share/mkimapdcert, nebo vytvořte ověřený X.509 certifikát a uložte jej do /usr/lib/courier-imap/share/imapd.pem.

Spusťte IMAPS:
# /var/courier-imap/libexec/imapd-ssl.rc


Vytvoření RPM balíků Courier-IMAP

Můžete také vytvořit rovnou RPM balíky. Mohu jedině doporučit, protože pak již budete všechny! čtyři služby spouštět pomocí skriptu /etc/init.d/courier-imap start a to včetně vytvoření certifikátů pro služby IMAPS a POP3S během prvního spuštění skriptu.

Postup:

  • přihlaste se jako běžný uživatel
  • rozbalte archiv courier-imap-xx.tar.gz a změňte v souboru courier-imap.spec proměnnou _prefix na /var/courier-imap.
  • přepište soubor <courier source>/authlib/preauthvchkpw.c opraveným souborem odsud.
  • archiv zpátky zagzipujte
    # tar cf courier-imap-1.3.11.tar ./courier-imap-1.3.11 && gzip courier-imap-1.3.11.tar
  • vytvořte RPM balíky
    #rpm -ta courier-imap-1.3.11.tar.gz

V adresáři /usr/src/redhat/RPMS/i386 budete mít přeložené RPM balíky.
Před instalací RPM balíku do vašeho systému je třeba odinstalovat váš stávající IMAP balík.

sqwebmail

Instalace:

# ./configure --enable-cgibindir=/home/www/cgi-bin/ --enable-imagedir=/home/www/html/webmail/ --prefix=/var/sqwebmail
# make configure-check
(vypíše cesty kam bude instalovat soubory)
# make

# make install-strip
# make install-configure

Spustíme autorizačního démona:
# /var/sqwebmail/libexec/authlib/authdaemond start

a do crontabu dáme:
0 * * * * /usr/local/share/sqwebmail/cleancache.pl

Vytvoření RPM balíků sqwebmail 3.0.0 a 3.1.0

Postup:

  • rozbalte archiv sqwebmail-x-x-x.tar.gz a změňte v souboru sqwebmail.spec proměnnou htmllibdir na /var/sqwebmail, dále imagedir na %{apachedir}/www/html/webmail a cgibindir na %{apachedir}/cgi-bin
  • přepište soubor <sqwebmail source>/authlib/preauthvchkpw.c opraveným souborem odsud.
  • archiv zpátky zagzipujte
    # tar cf sqwebmail-x-x-x.tar ./sqwebmail-x-x-x && gzip sqwebmail-x-x-x.tar
  • vytvořte RPM balíky
    #rpm -ta sqwebmail-x-x-x.tar.gz

V adresáři /usr/src/redhat/RPMS/i386 budete mít přeložené RPM balíky.


Autor: Roman Pěch
Vytvořeno: 20.10.2001
Oblast: Software