Maildrop - automatické vytváření adresářů

V návaznosti na návod na mailserver s využitím virtuálních uživatelů uložených v MySQL sem přidám jen takovou malou poznámku k maildropu. Určitě jste narazili na potřebu automaticky zakládat adresář uživatele kam se budou doručovat jeho emaily.

V odkazovaném návodu to řeším perlovým skriptem, který se musí spustit po založení uživatele a vygeneruje vhodnou konfiguraci pro maildrop. Toto řešení má pár vad, tou největší je nutnost spouštění skriptu aby vůbec pošta pro daného uživatele nějak fungovala. Při správě přes shellové skripty je to v pohodě, ale pokud chce člověk použít webové rozhraní, tak je spouštění suidnutého perlového skriptu docela nepříjemnou komplikací.

Řešením je změnit konfiguraci maildropu. Pokud existuje konfigurační soubor pro daného uživatele, použít ho, ale když neexistuje tak vytvořit uživateli potřebný adresář pro poštu a doručit mu jí.

Pro tuto změnu je nunté upravit kounfigraci postfixu, tak aby maildropu při doručování emailu přidával další potřebné parametry. V souboru /etc/postfix/master.cf upravte konfiguraci pro transport maildrop do následující podoby:

maildrop  unix  -       n       n       -       -       pipe
    flags=R user=virtual:virtual argv=/usr/bin/maildrop -d ${recipient} ${user} ${nexthop}

Dál je nutné upravit "globální" filtrovací pravidla pro maildrop v souboru /home/virtual/.mailfilter

LOGNAME=tolower($LOGNAME)
UZIVATEL=tolower($1)
DOMENA=tolower($2)
 
`/usr/bin/test -d /home/virtual/$DOMENA/$UZIVATEL/Maildir/`
if ($RETURNCODE == 1)
{
  `/bin/mkdir -p /home/virtual/$DOMENA/$UZIVATEL`
  `/usr/bin/maildirmake /home/virtual/$DOMENA/$UZIVATEL/Maildir`
}
 
`/usr/bin/test -d /home/virtual/$DOMENA/$UZIVATEL/Maildir/.Sent/`
if ($RETURNCODE == 1)
{
`/usr/bin/maildirmake /home/virtual/$DOMENA/$UZIVATEL/Maildir/.Sent`
}
 
`/usr/bin/test -d /home/virtual/$DOMENA/$UZIVATEL/Maildir/.Trash/`
if ($RETURNCODE == 1)
{
`/usr/bin/maildirmake /home/virtual/$DOMENA/$UZIVATEL/Maildir/.Trash`
}
 
`/usr/bin/test -d /home/virtual/$DOMENA/$UZIVATEL/Maildir/.Drafts/`
if ($RETURNCODE == 1)
{
`/usr/bin/maildirmake /home/virtual/$DOMENA/$UZIVATEL/Maildir/.Drafts/cur`
}
 
# zkontroluji existenci uzivatelskeho filtru
`/usr/bin/test -r /home/virtual/.mailfilters/$LOGNAME`
if ( $RETURNCODE == 0 )
{
  # filtr existuje, proto ho pouziju
  logfile "/home/virtual/logs/$LOGNAME"
  log "Including /home/virtual/.mailfilters/$LOGNAME"
  include "/home/virtual/.mailfilters/$LOGNAME"
}
else
{ 
  # filtr neexistuje, takze dorucim email primo do uzivatelovy schranky
  logfile "/home/virtual/logs/$LOGNAME"
  to "/home/virtual/$DOMENA/$UZIVATEL/Maildir/."
}

Pokud použijete toto řešení, máte stále ještě možnost používat pro každého uživatele jeho vlastní třídící pravidla generovaná skriptem, který používám ve svém návodu na mailserver.


Submitted by tsunami on 17. November 2006 - 19:28 categories [ ]

Volby prohlížení komentářů

Vyberte si, jak chcete zobrazovat komentáře a klikněte na "Uložit změny".

Vice prijemcu

Ahoj,
Pouzil jsem tento zpusob ale mam problem, ze pokud poslu zpravu na vic prijemcu v domene tak se mi vytvori spatne slozky, neco jako: /home/vmail/prvni@domena.cz/druha@domena.cz/Maildir/ ....

Vice prijemcu

Ahoj,
Pouzil jsem tento zpusob ale mam problem, ze pokud poslu zpravu na vic prijemcu v domene tak se mi vytvori spatne slozky, neco jako: /home/vmail/prvni@domena.cz/druha@domena.cz/Maildir/ ....

RE: Vice prijemcu

Omlouvam se, ze jsem dotaz poslal dvakrat.
Nasel jsem odpoved a reseni meho problemu viz nize.

Pridal jsem do main.cf nasledujici radky:
maildrop_destination_concurrency_limit = 1
maildrop_destination_recipient_limit = 1

Volby prohlížení komentářů

Vyberte si, jak chcete zobrazovat komentáře a klikněte na "Uložit změny".

Poslat nový komentář

Obsah tohoto pole je soukromý a nebude veřejně zobrazen.
CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
             _    __  __     __         __   __
__ __ __| | / _| \ \ / / _ _ \ \ / /
\ \/ / / _` | | |_ \ \ / / | | | | \ V /
> < | (_| | | _| \ V / | |_| | | |
/_/\_\ \__,_| |_| \_/ \__, | |_|
|___/
Enter the code depicted in ASCII art style.

Klenot.cz — domov pro Vaše stránky