Salut!
J'ai adoré le tutoriel vidéo de grafikart sur le serveur dédié (principalement car je m'en suis servit pour de vrai en partant de novice jusqu'à "je suis trop fort ya tout qui marche" en passant pas "zut j'ai plus qu'à tout réinitialiser")

Cependant je voulais pouvoir gérer les mails comme je voulais avec mysql, j'ai donc suivi la partie correspondante sur lafermeduweb et bien sur ça n'a pas marché du premier coup. J'ai donc beaucoup cherché ce qui n'allait pas et notamment grace a ce thread j'ai réussi

Je me suis dit que j'allais donc le faire partager ici.

Ce qu'il manque au tuto de la ferme du web :

Je suppose donc ici que vous avez suivit le tuto correspondant jusqu'à la fin (installation de postfix, courier, mise en place de roundcube), et que vous le problème commence quand vous ne pouvez pas vous connecter avec roundcube à votre compte mail fraichement inséré dans la table 'comptes' disons (contact@NOM_DE_DOMAINE.com).

tout d'abord envoyé un mail à contact@NOM_DE_DOMAINE.com depuis gmail par exemple

ensuite verifier qu'il à été reçu:

ls /var/spool/vmail/NOM_DE_DOMAINE.com/contact/new

En gros si le dossier n'existe pas ou est vide ça ne sert a rien je pense de continuer.

La principale erreur c'est que courier-imap cherche les message dans /unDossier/unAutre/ Maildir
Donc le truc est de modifier postfix pour qu'il creer le compte mail dans ce dossier:
Modifier la ligne suivante dans le fichier /etc/postfix/mysql-virtual_comptes.cf (ajouter le Maildir a la fin) :

select_field = CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/Maildir/')

Maintenant Renvoyez-vous un mail à contact@NOM_DE_DOMAINE.com

ls /var/spool/vmail/NOM_DE_DOMAINE.com/contact/Maildir/new

ne devrait pas être vide.

Il ne manque plus qu'une chose pour que ça marche, modifier le fichier /etc/courier/authmysqlrc :

#MYSQL_NAME_FIELD name // ligne a commenté
#ligne a modifié : Attention : tout sur la même ligne
MYSQL_HOME_FIELD CONCAT("/var/spool/vmail",'/',SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')

Vous avez remarqué il n'y a pas le Maildir a la fin car courier-imap le met automatiquement (Je n'ai pas réussi à lui dire de faire autrement)

Pensez a tout redémarrer :

/etc/init.d/postfix restart
/etc/init.d/courier-authdaemon restart
/etc/init.d/courier-imap restart
/etc/init.d/courier-pop restart

Normalement vous pourrez vous connecter à votre adresse(qui sert d'identifiant) sur roundcube et vous verrai le 2e message test que l'on a envoyé.

Petit bonus
Pour que roundcube ne demande pas le server : modifier dans /var/www/webmail/config/main.inc.php

$rcmail_config'default_host'] = 'le reverse dns de votre server';

Pour préremplir le champs identifiant avec une adresse : ajouter ?_user=contact@NOM_DE_DOMAINE.COM à l'url

Voilà j'espère que ça sera utile à quelqu'un.

17 réponses


snap
Auteur

Tiens c'est marrant : après le premier code /code le nl2br ne se fait plus.

Bonjour snap, je rencontre quelques difficultés à installer un serveur mail, serais tu disponible sur Skype/MSN ou mumble afin de m'éclaircir?
msn: Stazus@live.fr
Skype: stazus2
Merci beaucoup

snap
Auteur

Salut devphp
Je suis pas totalement dispo pour le moment, (peutetre demain), mais malgré mon tuto qui marche chez moi j'ai eu beaucoup de mal a configuré imap et pop3 pour que ça marche sur thunderbird par exemple, j'y suis arrivé (et même avec du cryptage TLS) mais pas le smtp.

En me baladant sur le net je me suis rendu compte que maintenant il est conseiller d'utilisé Dovecot à la place de courier.
Comme courier il fait server imap pop3 (et le ssl est directement intégré) et en effet j'ai réussi a faire ce que je voulais avec Dovecot. Donc si tu veux pouvoir utiliser le smtp depuis d'autre ordi il te faut Dovecot.

Pour cela j'ai utilisé un autre tuto assez réputé http://www.starbridge.org/spip/spip.php?article12.
J'ai commencé au chapitre configuration de postfix mais en sautant les ligne virutal_* dans le main.cf de postfix car j'ai voulu conserver les lignes de lafermeduweb. Pour le reste j'ai suivit le tuto en remplaçant bien les bon trucs.
Malheureusement il y avait aussi une petite erreur, quand il faut configurer Dovecot avant de le compilé il faut rajouter une commande

cd dovecot-2.0.16
 //remplacer ça : ./configure --prefix=/usr/ --sysconfdir=/etc/ --with-mysql --libexecdir=/usr/lib/ --localstatedir=/var --with-moduledir=/usr/lib/dovecot/modules --disable-rpath --disable-static
//par ça : 
 ./configure --prefix=/usr/ --sysconfdir=/etc/ --with-mysql --libexecdir=/usr/lib/ --localstatedir=/var --with-moduledir=/usr/lib/dovecot/modules --disable-rpath --disable-static --with-ssl=openssl

Si j'ai le temp je mettrai en ligne mon main.cf et mon master.cf

Après c'est vrai que c'est pas top d'utiliser plein de tutos. Si t'as le temps et que t'as pas fait grand chose avec ton serveur mail je te conseillerai presque de reprendre le lien que j'ai mit plus haut et de le suivre entièrement depuis le début, j'ai lu beaucoup de bien sur ce tuto.

Merci beaucoup, je test tout ça dans la soirée et je te recontact si je n'y arrive pas :)
Cordialement.

Re bonjour, après 2 tentatives de réinstallation total, je n'arrive pas a prendre la logique...
Toujours rien dans /var/spool/vmail/ après l'envoi d'email
Je pense avoir tout bien fait, je me mélange les pinceaux à la fin ^^'

snap
Auteur

qu'est ce que tu utilise finalement dovecot ou courier? ta coufiguré postfix avec quel tuto? (lafermeduweb,starbridge)

j'ai essayé les deux, a chaque fois, cela ne créer rien dutout dans /var/spool/vmail ...

snap
Auteur

montre moi postfix -f.

root@domaine:~# postfix -f
postfix: invalid option -- 'f'
postfix: fatal: usage: postfix -c config_dir] -Dv] command

snap
Auteur

oups il m'avais semblais avoir vu cette commande qui affiche les ligne utiles de main.cf mais j'ai du halluciner.

Donc juste : (en cachant les vrais nom de domaine peutetre)

cat /etc/postfix/main.cf
#et aussi 
echo “TEST” | mail -s “Hello world” TONEMAIL@TONDOMAIN.com    
#suivi de 
cat /var/log/mail.log

en suivant le tuto de lafermeduweb pour la config de postfix,
il faut que tondomain.com soit dans la table domaines, et TONEMAIL@TONDOMAIN.com dans la table comptes pour que ça marche.

Voici mon main.cf

root@domaine:~# cat /etc/postfix/main.cf
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
disable_vrfy_command = yes
smtpd_helo_required = yes
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Pour faire simple, il est conseillé d'utiliser le reverse DNS de votre serveur.
myhostname = MONDOMAINE.com
myorigin = IP
mydestination = MONDOMAINE.com, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8, IP
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_aliases.cf,mysql:/etc/postfix/mysql-virtual_aliases_comptes.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_domaines.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_comptes.cf
virtual_mailbox_base = /var/spool/vmail/
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql-virtual_quotas.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = "La boite mail de votre destinataire est pleine, merci de reessayez plus tard."
virtual_overquota_bounce = yes

# adresses d'expedition
smtpd_sender_restrictions =
        permit_mynetworks,
        warn_if_reject reject_unverified_sender
# adresses de destination
smtpd_recipient_restrictions =
        permit_mynetworks,
        reject_unauth_destination,
        reject_non_fqdn_recipient
# client
smtpd_client_restrictions =
        permit_mynetworks

Voici mes tables mysql:

--
-- Base de données: `postfix`
--
-- --------------------------------------------------------
--
-- Structure de la table `alias`
--
CREATE TABLE IF NOT EXISTS `alias` (
  `source` varchar(255) NOT NULL DEFAULT '',
  `destination` text NOT NULL,
  `etat` tinyint(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`source`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Contenu de la table `alias`
--

-- --------------------------------------------------------
--
-- Structure de la table `comptes`
--
CREATE TABLE IF NOT EXISTS `comptes` (
  `email` varchar(255) NOT NULL DEFAULT '',
  `password` varchar(255) NOT NULL DEFAULT '',
  `quota` int(10) NOT NULL DEFAULT '0',
  `etat` tinyint(1) NOT NULL DEFAULT '1',
  `imap` tinyint(1) NOT NULL DEFAULT '1',
  `pop3` tinyint(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Contenu de la table `comptes`
--
INSERT INTO `comptes` (`email`, `password`, `quota`, `etat`, `imap`, `pop3`) VALUES
('Debias@dyraz.com', 'motdepasse', 0, 1, 1, 1);
-- --------------------------------------------------------
--
-- Structure de la table `domaines`
--
CREATE TABLE IF NOT EXISTS `domaines` (
  `domaine` varchar(255) NOT NULL DEFAULT '',
  `etat` tinyint(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`domaine`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Contenu de la table `domaines`
--
INSERT INTO `domaines` (`domaine`, `etat`) VALUES
('domaine.com', 1);

Lorsque j'essaye de me connecter a roundcube avec le compte que j'ai créé:
Erreur de connexion au serveur IMAP

Pour informations, lorsque j’envoie un email
dans le /var/log/mail.err, je n'ai aucunes erreurs
Je suis perplexe...
Merci en tout cas de ton aide.

snap
Auteur

Es ce que le domaine.com dans la table domaines correspond bien au domaine du compte mail Debias@dyraz.com ?
le mot de passe est-il bien encodé en MD5?
quand tu envoie un mail avec la command linux que je t'ai passé, que se passe t'il dans le dossier spool/vmail/domain/email/Maildir/ et aussi dans le mail.log?

Est ce que le domaine.com dans la table domaines correspond bien au domaine du compte mail Debias@dyraz.com ?
Oui cela correspond bien.
le mot de passe est-il bien encodé en MD5?
Oui le mot de passe est bien encodé
quand tu envoie un mail avec la command linux que je t'ai passé, que se passe t'il dans le dossier spool/vmail/domain/email/Maildir/ et aussi dans le mail.log?

Dans le dossier /var/spool/vmail il n'y a rien dutout...
dans le mail.log je n'ai rien. La seul chose que j'ai s'est dans mail.err:
Feb 2 14:13:38 dyraz imapd: authentication error: Input/output error
lorsque j'essaye de me connecté via roundcube...
Mais ce qui m'inquiète le plus s'est le fait qu'il n'y a rien dans spool/vmail ...

Mon pseudo Skype si tu veux: stazus2

Encore merci pour ton aide

lorsque je fais cat *
echo “TEST” | mail -s “Hello world” debias@dyraz.com

Le mail est reçus dans le fichier /var/spool/mail/debias

Alors que j'ai bien configuré vers /var/spool/vmail

Grand merci à Snap qui a prit de son temps pour m'expliquer, tout fonctionne parfaitement!!!!!!!!!!!!

Juste une petite info pour ceux que sa interesserai, beaucoup de société utilise les services de gMail pour avoir des adresses mail avec leur nom de domaine, sa evite aussi de stocker tous les mails d'une société sur son propre serveur dédié, et en cas de réinitialisation du serveur, vous perdez vos email.

Mon avis de professionnel serai plutot de prendre un système comme gMail qui est vraiment très très pratique pour avoir un email avec son nom de domaine et de beneficier de la puissance de la plateforme google apps.

allez, pour les paresseux ou curieux, le tuto suivant (bien que finalement out of date du point de vue des infos sur dovecot, on trouve ce qu'il faut sur le net pour le corriger) est quasi parfait : ICI