Serveur de mails multi-domaines
Ayant voulu créer un serveur de mail avec des comptes et des domaines virtuels je me suis très vite rendu compte que les différents tutoriels ne fonctionnaient pas dans ma configuration.
J’ai donc décidé de créer ce billet pour présenter le fonctionnement d’une telle infrastructure et comment la mettre en place.
Infrastructure du serveur
Le serveur va se composer de quatre services : l’agent de livraison (Postfix), le serveur de mails IMAP (Courier) et le serveur web (Apache + PHP) et la base de données (MySQL). Pour accéder au mails j’ai décidé d’utiliser RoundCube et PostfixAdmin pour administrer les utilisateurs, les alias et les domaines.
Création du compte virtuel
On va d’abord créer un utilisateur sur le serveur qui stockera les mails des utilisateurs :
1 2 | addgroup --gid 20001 virtual adduser --uid 20001 --gid 20001 virtual |
Installation des services
On va commencer par le plus simple : Apache et MySQL. On va tout simplement les récupérer dans les dépots :
1 | apt-get install apache2 mysql-server-5.0 php5 php5-mysql php5-gd |
Je n’aborderai pas ici la configuration d’Apache ni de PHP (penser juste à activer l’extension pour MySQL si ce n’est pas fait).
Base de données
Il faut créer la base de données que vont utiliser les autres services pour identifier les utilisateurs. Il suffit d’exécuter le script SQL suivant : PostfixMySQL.sql. Penser à modifier l’identifiant et le mot de passe pour le compte (ici : postfix / postfix).
1 2 3 4 5 | mysql ... mysql>CREATE DATABASE postfix; mysql>GRANT ALL PRIVILEGES ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'postfix'; mysql>\. PostfixMySQL.sql |
On ajoute l’administrateur de PostfixAdmin directement dans la base de données :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | mysql>INSERT INTO domain (domain, description) VALUES ('mkhelif.fr', 'Domaine personnel'); Query OK, 1 row affected (0.00 sec) mysql>INSERT INTO admin (username, password, active) VALUES ('postmaster@mkhelif.fr', '$1$CeeAzXb...J8njWAw1', '1'); Query OK, 1 row affected (0.00 sec) mysql>INSERT INTO domain_admins (username, domain, active) VALUES ('postmaster@mkhelif.fr', 'ALL', '1'); Query OK, 1 row affected (0.00 sec) mysql>INSERT INTO mailbox (username, password, name, maildir, domain, active) VALUES ('postmaster@mkhelif.fr', '$1$ExhxBRG6$...qhF/unIwe0Kk1', 'Marwan KHELIF', 'postaster@mkhelif.fr/', 'mkhelif.fr', '1'); Query OK, 1 row affected (0.00 sec) |
Note : le mot de passe est hashé en MD5 avec du sel. Voici un script PHP pour encoder votre mot de passe :
1 2 3 | <?php echo crypt ('password'); ?> |
On vérifie que l’utilisateur que l’on vient de créer a bien accès à la base de données :
1 2 3 4 | mysql postfix -u postfix -p Enter password: postfix ... mysql> |
Voilà la base de données est prête à être utilisée par les différents services.
Postfix
On commence par installer Postfix et le module de connexion à la base de données. Attention lors de l’installation si Exim4 est installé il sera supprimé et remplacé par Postfix.
1 | apt-get install postfix postfix-mysql |
Note : pendant l’installation sélectionner Site Internet.
Une fois installé il faut modifier le fichier suivant : /etc/postfix/main.cf. Rajouter les propriétés suivantes à la fin du fichier :
1 2 3 4 5 6 7 8 | virtual_transport = maildrop virtual_mailbox_base = /home/virtual virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf virtual_minimum_uid = 20001 virtual_uid_maps = static:20001 virtual_gid_maps = static:20001 |
On crée alors les fichiers de mapping avec la base de données :
1 2 3 4 5 6 | Fichier : /etc/postfix/mysql_virtual_alias_maps.cf user = postfix password = postfix hosts = localhost dbname = postfix query = SELECT goto FROM alias WHERE address = '%s' and active = '1' |
1 2 3 4 5 6 | Fichier : /etc/postfix/mysql_virtual_domains_maps.cf user = postfix password = postfix hosts = localhost dbname = postfix query = SELECT domain FROM domain WHERE domain = '%s' and active = '1' |
1 2 3 4 5 6 | Fichier : /etc/postfix/mysql_virtual_mailbox_maps.cf user = postfix password = postfix hosts = localhost dbname = postfix query = SELECT maildir FROM mailbox WHERE username = '%s' and active = '1' |
Modifier le fichier /etc/postfix/master.cf afin de modifier la livraison par maildrop :
1 2 3 4 5 6 7 8 | Remplacer la ligne :
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
par :
maildrop unix - n n - - pipe
flags=DRhu user=virtual argv=/usr/bin/maildrop -w 90 -d ${user}@${nexthop}
${extension} ${recipient} ${user} ${nexthop} ${sender} |
On redémarre alors le service :
1 | /etc/init.d/postfix restart |
Maildrop
On va alors installer le livreur de mails : maildrop.
1 | apt-get install maildrop |
On créer le fichier /home/virtual/.mailfilter de livraison, si vous souhaitez spécifier certaines règles de livraisons (mailinglists, spams, …) vous devez modifier ce fichier ou en créer un dans les dossiers de vos utilisateurs :
1 2 3 4 5 6 7 8 9 10 11 12 13 | Fichier : /home/virtual/.mailfilter
logfile "/home/virtual/.maildrop.log"
`[ -d $DEFAULT ] || (maildirmake $DEFAULT && maildirmake -f Spam $DEFAULT && maildirmake -f sent-mail $DEFAULT && maildirmake -f SpamToLearn $DEFAULT &&
maildirmake -f SpamFalse $DEFAULT)`
`test -r $HOME/$DEFAULT.mailfilter`
if( $RETURNCODE == 0 )
{
log "(==) Including $HOME/$DEFAULT.mailfilter"
exception {
include $HOME/$DEFAULT.mailfilter
}
} |
Une fois ce fichier créé il faut modifier les droits à ce fichier :
1 | chmod 600 .mailfilter |
Courier
On installe de la même façon Courier et le module de connexion à la base de données :
1 | apt-get install courier-imap courier-authlib-mysql |
Note : pendant l’installation choisissez NON lorsqu’il vous propose de créer les répertoires Web.
Modifier les paramètres dans les fichiers suivants :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | Fichier : /etc/courier/authdaemonrc authmodulelist="authmysql" Fichier : /etc/courier/authmysqlrc MYSQL_SERVER localhost MYSQL_USERNAME postfix MYSQL_PASSWORD postfix MYSQL_SOCKET /var/run/mysqld/mysqld.sock MYSQL_PORT 3306 MYSQL_OPT 0 MYSQL_DATABASE postfix MYSQL_USER_TABLE mailbox MYSQL_CRYPT_FIELD password MYSQL_LOGIN_FIELD username MYSQL_HOME_FIELD '/home/virtual' MYSQL_UID_FIELD '20001' MYSQL_GID_FIELD '20001' MYSQL_NAME_FIELD name MYSQL_MAILDIR_FIELD maildir MYSQL_WHERE_CLAUSE active='1' |
Note : vérifier qu’il n’y ai que des tabulations entre le nom et la valeur d’une propriété.
Il faut donner les accès à l’utilisateur virtual :
1 2 | chown virtual /usr/lib/courier/authdaemon chmod 750 /usr/lib/courier/authdaemon |
On redémarre alors les services IMAP et AuthDaemon de Courier :
1 2 | /etc/init.d/courier-imap restart /etc/init.d/courier-authdaemon restart |
Pour vérifier que le serveur IMAP arrive bien à se connecter à la base de données on exécute un test d’authentification :
1 2 3 4 5 6 7 8 9 10 | authtest postmaster@mkhelif.fr
Authentication succeeded.
Authenticated: postmaster@mkhelif.fr (uid 20001, gid 20001)
Home Directory: /home/virtual
Maildir: postmaster@mkhelif.fr/
Quota: 0S
Encrypted Password: $1$CeeAzXb...J8njWAw1
Cleartext Password: (none)
Options: (none) |
Maintenant tous les services sont configurés et communiquent entre eux, on peut configurer les accès Web.
PostfixAdmin et Roundcube
Tout d’abord on récupère les archives (récupérer les dernières versions depuis RoundCube et PostfixAdmin) :
1 2 | wget http://garr.dl.sourceforge.net/sourceforge/roundcubemail/roundcubemail-0.1.1.tar.gz wget http://dfn.dl.sourceforge.net/sourceforge/postfixadmin/postfixadmin_2.2.0.tar.gz |
On extrait alors les sources :
1 2 | tar -xzf roundcubemail-0.1.1.tar.gz tar -xzf postfixadmin_2.2.0.tar.gz |
Configuration de PostfixAdmin
Pour configurer PostfixAdmin il faut modifier les paramètres suivants du fichier config.inc.php et supprimer le fichier setup.php :
1 2 3 4 5 6 7 8 | $CONF['configured'] = true; $CONF['postfix_admin_url'] = 'http://www.mkhelif.fr/'; $CONF['create_default_folders'] = true; $CONF['database_type'] = 'mysqli'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfix'; $CONF['database_password'] = 'postfix'; $CONF['database_name'] = 'postfix'; |
Vous pouvez modifier les autres propriétés selon vos besoins.
Configuration de RoundCube
On va tout d’abord créer la base de données que va utiliser RoundCube :
1 2 3 4 5 6 7 | mysql ... mysql>CREATE DATABASE roundcube; Query OK, 1 row affected (0.00 sec) mysql>GRANT ALL PRIVILEGES ON roundcube.* TO 'roundcube'@'localhost' IDENTIFIED BY 'roundcube'; Query OK, 1 row affected (0.00 sec) |
Pour configurer RoundCube il faut déplacer les fichiers :
1 2 | mv ./config/db.inc.php.dist ./config/db.inc.php mv ./config/main.inc.php.dist ./config/main.inc.php |
Et modifier les paramètres :
1 2 3 4 5 | Fichier : config/db.inc.php $rcmail_config['db_dsnw'] = 'mysqli://roundcube:roundcube@localhost/roundcube'; Fichier : config/main.inc.php $rcmail_config['default_host'] = 'localhost'; |
Problèmes rencontrés
La commande authtest échoue
Cela signifie généralement que le serveur IMAP n’arrive pas à accéder à la base de données. Vérifier tous les paramètres du fichier /etc/courier/authmysqlrc et que le nom et la valeur des propriétés soient bien séparés par des tabulations et pas des espaces.
Pour activer les logs au niveau de Courier il faut modifier le fichier /etc/courier/authdaemonrc et positionner le paramètre DEBUG_LOGIN à 1.
J’obtiens l’erreur suivante : imapd: authentication error: Input/output error
J’avais rencontré ce problème car IMAP n’arrivai pas à se connecter à la base de données (mauvais mot de passe). Il faut vérifier le fichier /etc/courier/authmysqlrc.
RoundCube n’authentifie pas les utilisateurs
J’ai rencontré ce problème dans le cas où Apache n’a pas accès pour créer les répertoire par défaut d’un utilisateur (Inbox, Sent, Trash, Spam, Drafts), vérifier bien que le dossier existe et que le propriétaire est bien virtual. Sinon créer les répertoires grâce à la commande : maildirmake en vérifiant les droits : 755.
Conclusion
Voilà votre serveur de mails multi-domaines est prêt. Vous pouvez ajouter d’autres services : antispam (SpamAssassin), antivirus (ClamAV), gestion de quotas, …Mais je n’aborderai pas ces points là dans ce tutoriel.

24 juin 2008 - 20:22
Je teste de ce pas
on va voir si ton tuto est fonctionnel :p
21 juillet 2008 - 09:56
Bonjour, j’ai suivi le tuto, je tente aussi de mettre en place un serveur multidomaine sur mon serveur dédié mais j’ai de gros soucis… par exemple dans roundcube (j’ai installé la dernière version disponible), là j’ai bien accès aux différents dossiers, je vais dans la partie « préférence », je crée un dossier mais quand je reviens sur la page principale, les dossiers disparaissent et impossible d’envoyer des mails… bref si vous avez une idée…^^
merci
Édition par mkhelif :
Le problème a été résolu en corrigeant l’ID d’utilisateur (20001 dans le tutoriel) de Courrier (Fichier /etc/courier/authdaemonrc) et Postfix, et en créant manuellement les dossiers de l’utilisateur.
3 septembre 2008 - 10:43
Salut,
Excellent tuto,j’ai pas eu de problème majeur pour installer sur une ubuntu serveur 8.04.
Une seul modif concerne le fichier : /etc/courier/authdaemonrc ou j’ai ajouté cette ligne :
MYSQL_CRYPT_PWFIELD password
Ensuite installe de roudcub(avec apt_get) et posfixadmin sans soucis.
Mais voila, pas moyen de me connecter ni avec l’un ni avec l’autre,
je connais pas le mot de passe par défaut de postmaster@mkhelif.fr.
un petit coup de main serai le bien venu pour cette phases final
Édition par mkhelif :
Le tutoriel a été réalisé à partir d’une Debian Etch et il semble qu’il manque quelques éléments pour que tout fonctionne sur Ubuntu. Je vais tenter de mettre à jour le tutoriel dès que j’aurai le temps.
9 septembre 2008 - 16:14
Bonjour,
Ce tuto est tout simplement excelent. Bravo.
je ne suis pas passé a la phase installation mais sa simple lecture est un regal : grammaire, orthographe le tout dans un style impécable… bref du beau billet.
Apres la brosse à reluire (si si), je me demande si l’installation est aussi aisée sous fedora et surtout si la config du couple spamassassin et clamAV est facile ?
existe-til un tuto aussi bien fait ?
4 novembre 2009 - 22:48
Bonjour,
Merci pour ce tuto sympathique sauf que quelques détails le rendent inactif .
le fichier .mailfiter : doit ere comme cela :
vim /home/virtual/.mailfilter
logfile « /home/virtual/.maildrop.log »
`[ -d $DEFAULT ] || (maildirmake $DEFAULT && maildirmake -f Spam $DEFAULT && maildirmake -f sent-mail $DEFAULT && maildirmake -f SpamToLearn $DEFAULT &&
maildirmake -f SpamFalse $DEFAULT)`
`test -r $HOME/$DEFAULT.mailfilter`
if( $RETURNCODE == 0 )
{
log « (==) Including $HOME/$DEFAULT.mailfilter »
exception {
include $HOME/$DEFAULT.mailfilter
}
ça evite l’erreur de login avec imap sur le Roundcube.
5 novembre 2009 - 00:19
Merci du coup d’oeil, un problème d’encoding. C’est corrigé.
6 novembre 2009 - 17:18
Bon bon bon …. la j’avoue je bloque …
Deja il y a aussi un autre fichier qui doit etre modifié :
__________________________________________
vim /etc/courriel/authmysqlrc :
MYSQL_SERVER localhost
MYSQL_USERNAME postfix
MYSQL_PASSWORD postfix
MYSQL_SOCKET /var/run/mysqld/mysqld.sock
MYSQL_PORT 3306
MYSQL_OPT 0
MYSQL_DATABASE postfix
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_FIELD password
MYSQL_CLEAR_PWFIELD password
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD ‘/home/virtual’
MYSQL_UID_FIELD ‘20001′
MYSQL_GID_FIELD ‘20001′
/etc/init.d/courier-imap restart
/etc/init.d/courier-authdaemon restart
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD maildir
MYSQL_WHERE_CLAUSE active=’1′
MYSQL_QUOTA_FIELD concat(quota,’S')
######## Faut ajouter : ##############
MYSQL_CLEAR_PWFIELD password
___________________________________________
Et la bonne destination sur une Debian lenny de :
chown virtual /usr/lib/courier/authdaemon
chmod 750 /usr/lib/courier/authdaemon
est :
chown virtual:virtual /usr/lib/courier/courier-authlib/authdaemon
chmod 750 /usr/lib/courier/courier-authlib/authdaemon
_________________________________________
Et « MON » probleme actuel :
– Postfix est configuré
– L’adresse Mail crée en Sql fonctionne bien dans Roundcube en réception et émission
Mais les adresse crée avec postfixadmin ne fonctionne pas, En effet voici l’erreur :
Nov 6 15:55:53 sd-1**** imapd: LOGIN FAILED, user=webmaster@online-server.fr, ip=[::ffff:127.0.0.1]
le dossier webmaster@online-server.fr existe bien dans « /home/virtual », les droits sont 775 et le propriétaire : virtual …..
_____________________________________________
Autre chose, j’ai du modifier un peu le main.cf de postfix que tous fonctionne :
http://seikenserver.com/main.cf.txt
Bon voila une fois cette étape passé les server sera 100% opérationnel.
En tous cas le tuto et tres bien réalisé meme si il à quelques erreurs, mais est -ce anormal ?
Je signale aussi un faute de frappe dans dans la création du mail admin en sql sur la BDD postfix, dans la derniére commande :
‘Marwan KHELIF’, ‘postaster@mkhelif.fr/’, ‘mkhelif.fr’, ‘1′);
postmaster et devenu postaster, ATTENTION ça pose une erreur qui force à tous viré si comme moi au premier essai fait un admin type postmaster@*******
____________________________________________
A remplacer aussi probablement les commande du fichier .mailfilter
voir différence :
maildirmake -f sent-mail
qui est la commande default que crée les dossier .sent-mail
et :
maildirmake -f Sent
commande cité plus bas qui crée la memes chose .. ou pas , pas test !.
Bonne journée !
9 septembre 2008 - 16:45
Bonjour,
Merci pour le coup de brosse
, ça fait toujours plaisir de voir que ses billets sont lus et appréciés.
Quand à l’installation sur une Fedora je pense que ça devrais être semblable dans les grandes lignes, ensuite il y a déjà eu des problèmes entre les distributions (cf commentaire de Harry).
J’ai ajouté SpamAssassin à ma configuration et il n’y a aucune configuration requise.
J’essaierai de faire un autre tutoriel sur l’installation d’un antivirus et d’un antispam, mais je ne connais pas de tutoriel à ce sujet.
Merci.
18 septembre 2008 - 12:05
La gestion des multi-domaines se passe ensuite intégralement dans PostfixAdmin ?
18 septembre 2008 - 13:15
Exact, tout est géré dans PostfixAdmin : les domaines virtuels, les comptes, les alias.
19 septembre 2008 - 22:55
Bonjour,
merci pour ce super tuto qui m’a bien aidé, tout à l’air bien installé mais il me reste quelques bugs, lorsque j’envois un email ca me met :
« Une erreur a empeché la sauvegarde »
Le mail part bien mais ca sauvegarde pas, ca doit venir d’un problème de chmod et/ou droits sur dossier mail lequel ?
J’ai également un souci avec mon postfixadmin, voici l’erreur :
« DEBUG INFORMATION:
MySQL 4.1 functions not available!
database_type = ‘mysqli’ in config.inc.php, are you using a different database? »
J’ai Mysql 5.0.32 sur le serveur pour information. Et enfin la recepetion des mails ne marche pas…
J’espère que quelqu’un pourra m’aider, merci d’avance !
Cordialement.
20 septembre 2008 - 11:06
salut les mais !
je suis un jeune unixien,
les protocoles liés au serveur de messagerie me trouble à travers les divers tutos sur le net.
on fait appelle a maildrop sur ce tuto que deviens courier-pop par exemple
merci d’avance
23 septembre 2008 - 07:34
Salut,
Keitboor :
Quand tu envois un message avec Rouncube, le mail est enregistré dans : /home/virtual/<compte>@<domain>
Il faut que l’utilisateur virtual ai les droits d’écriture sur ce dossier et dans les dossiers à l’intérieur.
Pour PostfixAdmin remplace « mysqli » par « mysql », la version de PHP installée sur ton serveur ne doit pas avoir le support pour mysql 5.0.
eric :
Courier-pop est remplacé par courier (en version imap). POP3 et IMAP sont deux protocoles (très différents) de serveurs de mails.
Maildrop est utilisé uniquement en interne (sur le serveur) pour distribuer les mails entre les différents comptes virtuels.
Merci.
23 septembre 2008 - 22:42
Merci pour l’info !
SVP j’ai un autre probleme avec postfixadmin : en effet,
apres creation d’un nouveaudomain.com, je n’arrive pas à créer des comptes courriels; apres une tentative de cette creation, je recois plutot le message suivant :
DEBUG INFORMATION:
Invalid query: La table ‘postfix.fetchmail’ n’existe pas
Please check the documentation and website for more information.
Postfix Admin
Forums
Cordialement
24 septembre 2008 - 23:16
Merci pour les infos, j’ai donc bien mis les droits comme il le fallait, j’avais également une autre erreur que j’ai vue dans les logs. Il faut pas oublier de mettre virtual en owner de « authdaemon » et le chmod 600 sur .mailfilter dans /home/virtual
J’ai également trouvé pour le problème de dossiers qui ne se crée pas tout seul à chaque nouvelle boite mail. Il suffit de modifier dans le main.inc.php, la ligne rcmail_config['creat_default_folders'] pour la passer à TRUE.
Et enfin, pour une connexion par outlook ou autre logiciel de messagerie, il faut mettre quoi en IMAP et SMTP ? Parce qu’apparement pour l’IMAP le couple login/mdp c’est bien le mail complet et mot de passe de postfix admin mais pour le SMTP cela ne fonctionne pas. Une idée ?
25 septembre 2008 - 09:50
Eric :
Cette table n’est pas nécessaire pour que le serveur de mails fonctionne. Elle permet de récupérer les mails sur d’autres serveurs (par exemple hotmail, gmail, …) en utilisant fetchmail.
Par contre l’ajout d’un domaine ne devrait pas utiliser cette table. Vérifie que les comptes n’ont pas été créés dans la base.
Keitboor :
En effet le chmod sur le .mailfilter est nécessaire je ne l’avais pas mis dans le tutoriel, je vais le rajouter.
Pour une connexion avec un client mail : IMAP (et SMTP) tu mets soit l’adresse IP soit un nom de domaine qui pointe vers le serveur pour le login et mot de passe tu peux utiliser n’importe quel compte virtuel créé dans PostfixAdmin.
26 septembre 2008 - 11:21
Merci pour ce bon tuto !
Je rencontre le soucis decris :
#######
RoundCube n’authentifie pas les utilisateurs
J’ai rencontré ce problème dans le cas où Apache n’a pas accès pour créer les répertoire par défaut d’un utilisateur (Inbox, Sent, Trash, Spam, Drafts), vérifier bien que le dossier existe et que le propriétaire est bien virtual. Sinon créer les répertoires grâce à la commande : maildirmake en vérifiant les droits : 755.
#######
Effectivement ls /home/virtual
Il n’y a rien
Quand je crée un user avec postfixadmin, tous s’integre bien des la base mysql, mais rien n’est créé dans /home/virtual
Pouvez vous etre plus explicite sur la methode a suivre pour résoudre ce soucis ?
Merci
27 septembre 2008 - 13:32
salut et une fois de plus merci pour l’aide!
1— non, les comptes créés ne sont pas dans la table, il y a plutot les adresses du genre abuse@change-xxxxxx.tld, webmaster@change-xxxxx.tld; cependant, j’ai changé à la main le domaine de ces adresses dans config.inc.php de postfixadmin.
2—- je ne sais pas ce qui ce passe quand j’essaye de m’envoyer un message via roundcube, ce dernier
n’arrive pas dans ma boite à lettre.
cependant, j’ai créée le fichier /usr/lib/courier/authdaemon à la main car il n’existait; l’authtest fonctionne normalement
Merci d’avance
2 octobre 2008 - 14:56
fmbeat :
Tu as deux possibilités :
Voilà.
eric :
Les adresses abuse, etc…sont les comptes créés par défaut par PostfixAdmin. Si le compte n’est pas créé dans la base de données, c’est normal que les mails que tu envois n’arrivent pas.
Essai d’insérer les comptes directement dans la base de données et retente d’envoyer un mail.
3 octobre 2008 - 14:13
merci d’avance je vais voir ça de pres
17 octobre 2008 - 09:51
Merci je vais essayer aussi
29 octobre 2008 - 15:26
Bonjour Marwan,
je viens de me prendre un petit serveur dédié kimsufi chez ovh et suis un total débutant sur ubuntu desktop.
J’ai réussi à faire tourner un serveur mail avec uniquement l’utilisateur admin du système mais évidemment c’est plus intéressant quand on peut créer plusieurs adresses mails avec les mots de passe.
J’ai suivi 3 tuto complets sur le net mais aucun n’a fonctionné.
Le tien est le plus récent donc je me suis dit qu’il n’y aurait pas de problème…
J’ai donc suivi ton tuto à la lettre et malheureusement au moment du test d’authentification, cela me met :
ERR: authdaemon: s_connect() failed: Permission denied
Authentication FAILED: Illegal seek
Ton tuto a été fluide jusqu’au moment où tu écris :
——————————————————–
Il faut donner les accès à l’utilisateur virtual :
chown virtual /usr/lib/courier/authdaemon
chmod 750 /usr/lib/courier/authdaemon
——————————————————–
Ces fichiers n’existent tout simplement pas chez moi alors j’ai pensé qu’ils avaient peut être changé le nom du fichier depuis.. donc j’ai mis ces accès sur le nom de fichier qui y ressemblait le plus dans le même dossier à savoir: /usr/lib/courier/courier-authlib/authdaemond. mais sans succès.
Je ne sais pas si tu as le temps de m’aiguiller mais je te remercie d’avance de ton tuto.
29 octobre 2008 - 16:14
Salut shiryu,
Alors pour la commande authtest, cette erreur arrive lorsque tu ne l’exécute pas en root. Essaye en root et ça devrait passer comme il faut.
Pour les deux fichiers dont il faut modifier le chmod ils sont complètement dépendant de la distribution que tu as. Essaye avec la configuration que tu as montée et vois le résultat.
a+
29 octobre 2008 - 16:37
pardonne moi, comme je te l’ai dit je suis débutant alors javais oublié la commande sudo devant authtest….
Lors de la commande authtest, j’ai désormais un autre message :
Authentication FAILED: Input/output error
Cela vient surement de la base sql, non?
Dans le fichier /etc/courier/authmysqlrc, j’ai tout supprimer et copier exactement ton code donc a priori cela ne viendrai pas de ce fichier.
En tout cas merci de ton aide
Laurent
29 octobre 2008 - 16:47
Attention, à la copie sur mon blog les tabulations ont dû être remplacées par des espaces, il faut remettre des tabulations.
Vérifie aussi que le login/password que tu as mis dans le fichier peut se connecter à la base de donnée : mysql postfix -u login -p
MySQL va alors te demander le mot de passe. Si ça échoue, il faut vérifier les accès à la base de données.
a+
29 octobre 2008 - 17:36
Merci pour ta réponse.
Pour les tabulations, j’avais tout remplacé effectivement, j’avais vu ça dans un autre tuto…
Après la commande « mysql postfix -u login -p », il me met :
———————————————————————————-
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 391
Server version: 5.0.51a-3ubuntu5.1 (Ubuntu)
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
———————————————————————————-
Le « Welcome to…. » veut dire que je suis bien connecté je pense…
Je vais pas t’embêter
merci quand même
29 octobre 2008 - 19:56
je te remercie de ton aide, j’ai tout désinstallé et vais réessayer demain.
encore merci pour tout.
bonne continuation
Laurent
10 novembre 2008 - 14:06
bonjour , tres bon tuto
j’ais le meme bug que shiryu : Authentication FAILED: Input/output error
sinon tout le reste marche bien le mysql postfix -u postfix -p marche
ya que le authtest postmaster@ma4way.net Authentication FAILED: Input/output error
27 décembre 2008 - 02:34
Vraiment génial. Merci d’avoir pris le temps d’écrire un document de cette qualité.
13 février 2009 - 11:57
Bonjour,
j’ai un souci avec cette partie:
Note : le mot de passe est hashé en MD5 avec du sel. Voici un script PHP pour encoder votre mot de passe :
Il faut le mettre dans quel fichier? à quel endroit?
13 février 2009 - 14:30
Salut,
Pour le fichier, tu peux créer un simple fichier ‘index.php’ et le mettre dans le répertoire web (par défaut : ‘/var/www’).
a+
15 février 2009 - 19:26
Bonjour,
Tout d’abord un grand merci pour ce tutoriel, clair et efficace. En un mot, génial !
J’ai par contre un petit souci, je n’ai pas de soucis pour envoyer un mail, par contre lorsque je tente de recevoir un mail j’ai une erreur:
Feb 15 18:17:26 sd-17705 postfix/pipe[28997]: 70BF11723D4: to=, relay=maildrop, delay=0.05, delays=0.02/0.01/0/0.02, dsn=5.1.1, status=bounced (user unknown. Command output: ERR: authdaemon: s_connect() failed: Permission denied Invalid user specified. )
Si jamais vous avez une idée …
15 février 2009 - 20:48
C’est encore moi, j’ai fini par trouver une solution à mon problème un simple
chmod 4755 /var/run/courier/authdaemon
et le tour et joué
17 mars 2009 - 08:53
Bonjour,
Je vous demande de l’aide, car j’ai suivis votre tuto mais la je ne trouve plus de soltution
Donc si vous auriez un peu de temps a me consacrer j’en serai ravi.
Tous d’abord mon serveur est sous debian lenny.
Et mon serveur mail tourne sous postfix. Mon authentification a l’air de fonctionner.
————————————————
authtest alex@***.com
Authentication succeeded.
Authenticated: alex@***.com (uid 20001, gid 20001)
Home Directory: /home/virtual
Maildir: ***.com/alex/
Quota: (none)
Encrypted Password: $1$ddf23f92$Ef.3m0WfAvoGfM0df5HlX1
Cleartext Password: (none)
Options: (none)
———————————————–
Et voici mon erreur :
———————————————-
postfix/pipe[6802]: 9ED0A18107: to=, relay=maildrop, delay=0.06, delays=0.04/0/0/0.01, dsn=4.3.0, status=deferred (temporary failure. Command output: /usr/bin/maildrop: Invalid home directory permissions – world writable. )
———————————————-
Et sous un autre point de vue:
———————————————-
maildrop -V 10 -d alex@***.com
maildrop: authlib: groupid=20001
maildrop: authlib: userid=20001
maildrop: authlib: logname=alex@***.com, home=/home/virtual, mail=***.com/alex/
maildrop: Changing to /home/virtual
maildrop: Invalid home directory permissions – world writable.
———————————————-
Voila j’ai chercher un peu partout mais sans reussir a reparer mon probleme, le message d’erreur me laisser penser a un probleme de permission j’ai donc mit un gros chmod -R 777 sur le /home/virtual, sans succes.
Je vous remercie d’avance pour vos idees.
17 mars 2009 - 09:06
Salut DuDu,
Le problème est effectivement un problème de droit, il faut faire un « chmod 755 /home/virtual » pour que seul l’utilisateur est les droits d’écriture sur le dossier. Il faudra surement modifier les droits dans les sous-dossiers aussi.
Voilà a+
18 mars 2009 - 11:15
Oui c’etait cela.
Un chmod -R 755 /home/virtual
Merci a toi.
14 juin 2009 - 21:53
Bonjour, j’ai un problème à l’étape
« Il faut donner les accès à l’utilisateur virtual :
chown virtual /usr/lib/courier/authdaemon
chmod 750 /usr/lib/courier/authdaemon »
Je n’ai pas de fichier « authdaemon » dans /usr/lib/courier/, et je ne comprends pas pourquoi j’ai bien suivi les étapes précédentes, quelqu’un a une idée ?
24 septembre 2009 - 12:27
j’ai egalement le mem pb. jne parviens pas a faire l’authentification avec imapd. j’utilise debian 5 et il n’y a pas de fich authdaemon ds /usr/lib/courier
24 septembre 2009 - 19:53
Salut essaye de voir à cet endroit : « /usr/local/libexec/courier-authlib/authdaemond » sinon tape la commande suivante « ps -aux | grep authdaemon ». Ca devrait te sortir la commande qui a démarré authdaemon avec le chemin qu’il faut.
29 septembre 2009 - 10:36
j’ai decouvert 1 truc sur mon systeme
a partir de phpmyadmin le mot de passe de l’utilisateur postfix passe
mais sur la console non
kelk1 pourrait me dire a quoi c du
30 septembre 2009 - 14:39
Ca veut dire que postfix n’arrive pas à accéder à la base de données. Il faut que tu vérifies le fichier « /etc/courier/authdaemonrc ». Principalement vérifies que ce sont bien des tabulations et non des espaces entre le nom et la valeur d’un paramètre.
28 septembre 2009 - 19:42
en fait je n’arrive a m’authentifier avec imap
kan jfai par ex authtest prince@domaine.lan j’ai une erreur
Authenticatication FAILED: Input/output error
je pense que mon « authmsql » ne fonctionne pas
28 septembre 2009 - 19:51
Oui c’est typiquement un problème de connexion entre IMAP et MySQL. Il faut vérifier tous les paramètres (login, mot de passe, …) dans les fichiers de configuration.
29 septembre 2009 - 00:13
deja fait mais si tu le dis jvai encore jetter 1 coup d’oeil
cependant lorsque je modifier « authmysql » en « authpam » l’authentification de mon compte non virtuel s’effectue
16 octobre 2009 - 15:32
Bonjour, votre tuto est excellent, mais je viens vous poser une colle
Nous avons une installation semblable à celle que vous avez mis en ligne et nous rencontrons un souci.
Un client a 2 noms de domaine xxx.fr et xxx.com (xxx.com est déclaré comme alias de xxx.fr dans postfixadmin). Le client utilise le serveur smtp présent sur la machine et lorsqu’un utilisateur (appartenant à la société du client) écrit @xxx.fr en utilisant le SMTP tout va bien, s’il écrit à xxx.com le mail est rejeté par maildrop… Ce qui ne se présente pas si le mail vient d’un SMTP externe…Auriez-vous une piste (je subodore qu’un truc doit être squeezé…mais lequel ??)
Cordialement
18 octobre 2009 - 22:19
Bonjour, merci pour le commentaire.
Personnellement j’utilise aussi ce genre de redirection entre une extension vers une autre et ça marche très bien. Au niveau de postfixadmin, je redirige tous les mails du ‘.com’ vers le ‘.fr’, et au niveau DNS il y à une entrée MX pour chaque extension et chaque entrée pointe vers le même serveur.
Est-ce qu’il y à des logs lorsque l’envoi échoue?
28 octobre 2009 - 12:22
Bonjour,
Tout d’abord merci pour le tuto.
j’utilise une ubuntu serveur 8.10.
j’ai un problème au niveau du maildir lorsque je test l’authentification voilà le résultat:
authtest postmaster@***.com
Authentication succeeded.
Authenticated: postmaster@***.com (uid 20001, gid 20001)
Home Directory: /home/virtual
Maildir: /home/virtual
Quota: (none)
Encrypted Password: $1$ddf23f92$Ef.3m0WfAvoGfM0df5HlX1
Cleartext Password: (none)
Options: (none)
Pourquoi ne me prends t’il pas en compte le maildir comme sur votre tuto?
Cordialement,
28 octobre 2009 - 14:21
Salut, alors le « maildir » est récupéré depuis la base de données.
La configuration pour la bdd est dans le fichier « /etc/courier/authdaemonrc », principalement le champs MYSQL_MAILDIR_FIELD (attention bien mettre des tabulations entre le nom et la valeur des champs).
Vérifie dans la base de données les valeurs de la table « mailbox », la colonne « maildir ».
La valeur doit correspondre au répertoire que tu veux : postmaster@***.com
30 octobre 2009 - 14:51
Bonjour et merci pour les renseignement qui m’ont bien aidé
maintenant dans mes logs j’ai cette erreur lorsque je veux créer une nouvelle boite mail et le dossier ne se créer pas.
relay=maildrop, delay=0.05, delays=0.02/0.01/0/0.02, dsn=4.3.0, status=deferred (temporary failure. Command output: /usr/bin/maildrop: Unable to create a dot-lock at test3@***.com4844.0.***.
Sauriez vous pourquoi?
Merci
30 octobre 2009 - 15:21
Essayes de créer le dossier à la main, des fois postfix n’arrive pas à créer le dossier maildir mais je n’ai pas encore trouvé la source du problème.
Exécute la commande suivante : maildirmake test3@***.com
30 décembre 2009 - 12:38
Bonjour et merci pour ce tuto !
J’ai un problème je n’arrive pas à recevoir mes mails dans roundcube. Pourtant mes mails arrivent bien sur mon serveur.
Je précise que je n’ai pas installé postfixadmin est-ce pour cela ?
Merci d’avance
Cordialement
30 décembre 2009 - 14:03
Re,
J’ai finalement trouvé mon problème !
Je n’avais pas les droits dans le dossier virtual !
Cordialement
3 janvier 2010 - 17:18
Salut,
Tant mieux si tu as réussi à résoudre ton problème, désolé pour ne pas avoir répondu, vacances oblige
6 février 2010 - 14:49
Très bon tuto:
Une question cependant : Sans certificat d’authentification, mes mails ne risquent-ils pas d’être envoyés directement dans les courriers indésirables voir d’être rejetés?
Merci beaucoup!
9 février 2010 - 20:29
Salut, personnellement je n’ai pas eu de problèmes (ça va bientot faire 2 ans que mon serveur mails tourne).
Si le nom de domaine de l’adresse mail correspond bien à l’adresse IP du serveur émetteur il n’y a pas de souci.
Après rajouter un certificat au serveur mail ne peut jamais faire de mal.
25 février 2010 - 12:18
Salut,
J’héberge mes nom de domaine chez OVH et utilise une redirection MX. Il y a donc des chances que mes mails soient rejetés.
Qu’en penses-tu?
Devrais-je héberger moi même le serveur DNS pour mes noms de domaine?
26 février 2010 - 13:10
Salut, j’utilise moi aussi les serveurs OVH pour mes noms de domaine.
Lorsqu’un client reçoit ton mail, son serveur récupère l’adresse IP du serveur émetteur, fait une requête DNS à OVH pour vérifier que la redirection MX du domaine corresponde bien à l’adresse IP.
Attention tous les serveurs ne sont pas configurés pour fonctionner comme ça.
Ta configuration est bonne.