Archives pour Lundi 13 février 2012

Postfix : patch pour la gestion des alias par fichier .forward

Dans le cas d’une configuration mail par comptes utilisateurs locaux (utilisateurs systèmes), il est courant de configurer un alias de redirection par le biais du fichier .forward situé dans le répertoire personnel de chaque utilisateur. Le problème est qu’il est impossible de modifier ce fichier au travers d’une interface web ou encore son webmail vu que des restrictions d’accès s’appliquent à ces fichiers. En particulier , la vérification du propriétaire sous Postfix :

Feb 12 17:04:47 mail postfix/local[15208]: warning: file /home/bhuisgen/.forward has bad owner uid 33

La redirection mail est évidemment bloquée. Le patch proposé vise donc à supprimer ce test et permettre l’envoi du mail vers l’adresse de redirection :

root@mail:~# apt-get build-dep postfix
root@mail:~# apt-get source postfix
root@mail:~# cd postfix-2.7.1/
root@mail:~# cd src/local/

Le patch à appliquer est le suivant :

--- dotforward.c.old    2012-02-12 17:35:34.000000000 +0100
+++ dotforward.c    2012-02-12 17:36:23.000000000 +0100
@@ -231,12 +231,12 @@
state.msg_attr.exp_from = state.msg_attr.local;
if (S_ISREG(st.st_mode) == 0) {
msg_warn("file %s is not a regular file", STR(path));
-        } else if (st.st_uid != 0 && st.st_uid != usr_attr.uid) {
+        } /*else if (st.st_uid != 0 && st.st_uid != usr_attr.uid) {
msg_warn("file %s has bad owner uid %ld",
STR(path), (long) st.st_uid);
} else if (st.st_mode & 002) {
msg_warn("file %s is world writable", STR(path));
-        } else if ((fd = open_as(STR(path), O_RDONLY, 0, usr_attr.uid, usr_attr.gid)) < 0) {
+        } */else if ((fd = open_as(STR(path), O_RDONLY, 0, usr_attr.uid, usr_attr.gid)) < 0) {
msg_warn("cannot open file %s: %m", STR(path));
} else {
root@mail:~# patch -p0 < patch-fix_forward-20120213

Reste à compiler et installer :

root@mail:~# cd ../..
root@mail:~# dpkg-buildpackage -rfakeroot
root@mail:~# cd ..
root@mail:~# dpkg -i postfix_2.7.1-1+squeeze1_amd64.deb

Et j’en profite pour vous signaler que j’ai fait un minuscule plugin pour le webmail RoundCube, disponible ici. afin de gérer les .forward.

Pluxml : le blog avec un moteur diesel ?

# Creation de l'objet principal et lancement du traitement
$plxMotor = plxMotor::getInstance();

# Hook Plugins
eval($plxMotor->plxPlugins->callHook('Index'));

# Chargement du fichier de langue
loadLang(PLX_CORE.'lang/'.$plxMotor->aConf['default_lang'].'/core.php');

$plxMotor->prechauffage();
$plxMotor->demarrage();

Bon, à part çà, c’est un très bon moteur de blog : http://www.pluxml.org/

Haut de page