• Serveurs
  • [Discussion] Installer un serveur de mail avec Postfix et Dovecot

19/10/2019 : Ce tutoriel date de 2014 et n'est aujourd'hui plus maintenu faute de temps. Si quelqu'un est intéressé pour le reprendre, faites moi signe par MP. Par contre, je continuerai de faire évoluer et de maintenir l'image Docker https://github.com/hardware/mailserver
Pour ce tuto : http://mondedie.fr/d/5750
Si vous avez une question, une remarque ou une suggestion, n'hésitez pas à poster un commentaire sur ce topic.
Nice, tu m'évites de devoir le faire 😀, ça fait des semaines que je repousse ce tuto il est hyper complet et bien fait 😉. Juste la fin ou j'ai mis Roundcube, mais ton webmail semble assez sympa, je pense que je vais tester son installation.

Il existe des plugins ou autre, genre calendrier & co ? Car c'était pour cela que j'avais opté pour Roundcube à l'époque.
Un système de plugin est intégré mais à ma connaissance il n'y a pas de de calendrier, à voir... Rainloop est un projet open source qui est encore assez jeune (septembre 2013 sur Github) mais pour l'instant je n'ai pas encore eu de problème, pourtant je l'utilise tous les jours au boulot (chez moi je passe directement par thunderbird), je le trouve vraiment très stable pour un webmail qui a moins d'un an.

Les fonctionnalités sont juste énormes :

- Chiffrement des mails avec OpenPGP (quasiment aucun webmail a cette fonctionnalité, peut-être gmail d'ici quelques mois)
- Pas de base de donnée à installer
- Intégration des réseaux sociaux
- Intégration de dropbox
- Validation en deux étapes (pour en savoir plus : http://www.google.com/landing/2step/)
- Drag & drop
- Installation et mise à jour ultra simple
Effectivement il a l'air très prometteur.
Peut on l'intégrer à Owncloud ?
Est-ce qu'il a une fonctionnalité de mise en place automatique de libellé avec des filtres comme sur Gmail ?
Salut, Hardware franchement je suis coupé a la partit postfixadmin j'ai comme l'impression de plus avoir internet dessus ...

Mais dns de chez online :


Voilà comment il me donne sur le navigateur :


Mon postfixadmin.conf
server {
   listen 80;
   server_name     postfixadmin.postlab.fr;
   root            /var/www/postfixadmin;
   index            index.php;
   charset         utf-8;

    auth_basic "seedbox";
    auth_basic_user_file "/etc/nginx/passwd/rutorrent_passwd";

   location / {
      try_files $uri $uri/ index.php;
   }

   location ~* \.php$ {
        include       /etc/nginx/fastcgi_params;
        fastcgi_pass  unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
   }
}

Mon index mais y a que dalle juste pour le faire tourné ...

server {
    listen 80 default_server;
    listen 443 default_server ssl;
    server_name _;

    charset utf-8;
    index index.html index.php;
    client_max_body_size 10M;

    ssl_certificate /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    access_log /var/log/nginx/rutorrent-access.log combined;
    error_log /var/log/nginx/rutorrent-error.log error;

    error_page 500 502 503 504 /50x.html;
    location = /50x.html { root /usr/share/nginx/html; }

    auth_basic "seedbox";
    auth_basic_user_file "/etc/nginx/passwd/rutorrent_passwd";

    location = /favicon.ico {
        access_log off;
        log_not_found off;
    }

    ## début config rutorrent ##

}


Franchement je suis en panne des le début ...


NB: Au début ça marcher, mais j'avais une page blanche donc j'ai trifouiller un truc quoi je c'est plus et depuis plus rien coupé
Voila qui me plait

Si tu es chaud Yoshi, j'ai quelque domaine à migrer. On peut tester ça par la même occasion
Oui j'étais bon en fête juste le serveur m'avais ban ... par contre j'ai toujours le premier souci j'ai une page blanche quant je vais sur postfixadmin.postlab.fr une idées j'ai tenté d'ajouté en index setup.php mais rien ...
@takashi > Tu peux me donner le résultat de ces deux commandes stp :
ls -alX /var/www/postfixadmin
et
cat /etc/nginx/fastcgi_params
yep,
d# ls -alX /var/www/postfixadmin;
total 432
drwxrwxr-x  4 www-data www-data  4096 May  6 22:50 ADDITIONS
-rw-rw-r--  1 www-data www-data     0 May  6 22:52 build-stamp
drwxrwxr-x  2 www-data www-data  4096 May  6 22:50 configs
drwxrwxr-x  2 www-data www-data  4096 May  6 22:50 css
drwxrwxr-x  6 www-data www-data  4096 May  6 22:52 debian
drwxrwxr-x  3 www-data www-data  4096 May  6 22:50 DOCUMENTS
drwxrwxr-x  3 www-data www-data  4096 May  6 22:50 images
drwxrwxr-x  2 www-data www-data  4096 May  6 22:50 languages
drwxrwxr-x  2 www-data www-data  4096 May  6 22:50 model
drwxrwxr-x  4 www-data www-data  4096 May  6 22:50 scripts
drwxrwxr-x  3 www-data www-data  4096 May  6 22:50 smarty
drwxrwxr-x  2 www-data www-data  4096 May  6 22:50 templates
drwxrwxr-x  2 www-data www-data  4096 May  6 22:50 templates_c
drwxrwxr-x  2 www-data www-data  4096 May  6 22:50 tests
drwxrwxr-x  4 www-data www-data  4096 May  6 22:50 users
drwxrwxr-x  3 www-data www-data  4096 May  6 22:50 VIRTUAL_VACATION
drwxrwxr-x 17 www-data www-data  4096 May  6 22:52 .
drwxr-xr-x  3 root     root      4096 Aug 18 19:15 ..
-rw-rw-r--  1 www-data www-data 12933 Nov  5  2009 calendar.js
-rw-rw-r--  1 www-data www-data  4239 Nov 16  2013 backup.php
-rw-rw-r--  1 www-data www-data  3004 Nov 10  2013 broadcast-message.php
-rw-rw-r--  1 www-data www-data  2948 Jan 14  2014 common.php
-rw-rw-r--  1 www-data www-data 23099 Aug 18 19:20 config.inc.php
-rw-rw-r--  1 www-data www-data  1445 Nov 10  2013 delete.php
-rw-rw-r--  1 www-data www-data  1673 Nov 10  2013 editactive.php
-rw-rw-r--  1 www-data www-data  7517 Jan 21  2014 edit.php
-rw-rw-r--  1 www-data www-data 14408 Nov 16  2013 fetchmail.php
-rw-rw-r--  1 www-data www-data 57574 May  6 21:46 functions.inc.php
-rw-rw-r--  1 www-data www-data  3559 Nov 10  2013 index.php
-rw-rw-r--  1 www-data www-data   847 Nov 10  2013 list-admin.php
-rw-rw-r--  1 www-data www-data  1527 Nov 10  2013 list-domain.php
-rw-rw-r--  1 www-data www-data 16974 Feb 17 14:44 list-virtual.php
-rw-rw-r--  1 www-data www-data  2522 May  2 00:52 login.php
-rw-rw-r--  1 www-data www-data   771 Nov 10  2013 main.php
-rw-rw-r--  1 www-data www-data  1829 Nov 10  2013 sendmail.php
-rw-rw-r--  1 www-data www-data 16267 Dec 28  2013 setup.php
-rw-rw-r--  1 www-data www-data  3707 Jan 14  2014 smarty.inc.php
-rw-rw-r--  1 www-data www-data 59787 Jan 21  2014 upgrade.php
-rw-rw-r--  1 www-data www-data  6006 Dec 22  2013 vacation.php
-rw-rw-r--  1 www-data www-data  1354 Nov 10  2013 variables.inc.php
-rw-rw-r--  1 www-data www-data  2444 Dec  8  2013 viewlog.php
-rw-rw-r--  1 www-data www-data  5835 Feb 19 12:49 xmlrpc.php
-rw-rw-r--  1 www-data www-data 40057 May  6 21:46 CHANGELOG.TXT
-rw-rw-r--  1 www-data www-data 15148 Nov 12  2007 GPL-LICENSE.TXT
-rw-rw-r--  1 www-data www-data  5578 Feb 19 12:52 INSTALL.TXT
-rw-rw-r--  1 www-data www-data  2189 Apr 24  2011 LICENSE.TXT


fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

Sauvegarde le fichier fastcgi_params et essaye ceci à la place :
fastcgi_param   QUERY_STRING            $query_string;
fastcgi_param   REQUEST_METHOD          $request_method;
fastcgi_param   CONTENT_TYPE            $content_type;
fastcgi_param   CONTENT_LENGTH          $content_length;

fastcgi_param   SCRIPT_FILENAME         $document_root$fastcgi_script_name;
fastcgi_param   SCRIPT_NAME             $fastcgi_script_name;
fastcgi_param   PATH_INFO               $fastcgi_path_info;
fastcgi_param   PATH_TRANSLATED         $document_root$fastcgi_path_info;
fastcgi_param   REQUEST_URI             $request_uri;
fastcgi_param   DOCUMENT_URI            $document_uri;
fastcgi_param   DOCUMENT_ROOT           $document_root;
fastcgi_param   SERVER_PROTOCOL         $server_protocol;

fastcgi_param   GATEWAY_INTERFACE       CGI/1.1;
fastcgi_param   SERVER_SOFTWARE         nginx/$nginx_version;

fastcgi_param   REMOTE_ADDR             $remote_addr;
fastcgi_param   REMOTE_PORT             $remote_port;
fastcgi_param   SERVER_ADDR             $server_addr;
fastcgi_param   SERVER_PORT             $server_port;
fastcgi_param   SERVER_NAME             $server_name;

fastcgi_param   HTTPS                   $https;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
Hardware wrote: @Jedediah > Nope, peut-être dans une futur version
Arf, pas pour moi alors
Ah là il me dit
File not found. 
il trouve pas le setup nan?
Je reviens à toi j'ai 2 souci:

1) je n'arrive pas a me connecter sur Thunderbird

2) quand j'envois un mail voilà ce que dit le log
Aug 19 00:33:59 n7 postfix/smtpd[2850]: connect from mail-qa0-f68.google.com[209.85.216.68]
Aug 19 00:33:59 n7 postfix/trivial-rewrite[2856]: warning: connect to mysql server 127.0.0.1: Access denied for user 'postfix'@'localhost' (using password: YES)
Aug 19 00:33:59 n7 postfix/trivial-rewrite[2856]: warning: mysql:/etc/postfix/mysql-virtual-alias-maps.cf: table lookup problem
Aug 19 00:33:59 n7 postfix/trivial-rewrite[2856]: warning: virtual_alias_domains lookup failure
Aug 19 00:33:59 n7 postfix/trivial-rewrite[2856]: warning: mysql:/etc/postfix/mysql-virtual-alias-maps.cf: table lookup problem
Aug 19 00:33:59 n7 postfix/trivial-rewrite[2856]: warning: virtual_alias_domains lookup failure
Aug 19 00:33:59 n7 postfix/smtpd[2850]: NOQUEUE: reject: RCPT from mail-qa0-f68.google.com[209.85.216.68]: 451 4.3.0 <********@gmail.com>: Temporary lookup failure; from=<********@gmail.com> to=<contact@postlab.fr> proto=ESMTP helo=<mail-qa0-f68.google.com>
Aug 19 00:34:00 n7 postfix/smtpd[2850]: disconnect from mail-qa0-f68.google.com[209.85.216.68]
Aug 19 00:37:20 n7 postfix/anvil[2852]: statistics: max connection rate 1/60s for (smtp:209.85.216.68) at Aug 19 00:33:59
Aug 19 00:37:20 n7 postfix/anvil[2852]: statistics: max connection count 1 for (smtp:209.85.216.68) at Aug 19 00:33:59
Aug 19 00:37:20 n7 postfix/anvil[2852]: statistics: max cache size 1 at Aug 19 00:33:59
est en plus il ma encore ban -_-
Tu as toutes les informations qu'il te faut pour résoudre ton problème :
# Cette ligne veut dire que tu n'as pas saisi le bon mot de passe donc il peut pas se connecter à la BDD :
warning: connect to mysql server 127.0.0.1: Access denied for user 'postfix'@'localhost' (using password: YES)

# Cette ligne veut dire qu'il n'arrive pas à lire la BDD, normal, il peut pas se connecter :
warning: mysql:/etc/postfix/mysql-virtual-alias-maps.cf: table lookup problem

# Cette ligne veut dire que l'email que tu as envoyé via Gmail ne peut pas être traité par Postfix. Encore une fois c'est normal, il peut pas se connecter à la BDD [img]/assets/images/smileys/tongue.png[/img]
NOQUEUE: reject: RCPT from mail-qa0-f68.google.com[209.85.216.68]: 451 4.3.0 <********@gmail.com>: Temporary lookup failure; from=<********@gmail.com> to=<contact@postlab.fr> proto=ESMTP helo=<mail-qa0-f68.google.com>
Vérifie tes paramètres de connexions dans ces 3 fichiers :
/etc/postfix/mysql-virtual-mailbox-domains.cf
/etc/postfix/mysql-virtual-mailbox-maps.cf
/etc/postfix/mysql-virtual-alias-maps.cf
Si tu penses que c'est le mdp qui pose problème, tu peux le modifier avec cette commande en root :
mysql> SET PASSWORD FOR 'postfix'@'%' = PASSWORD('MOT DE PASSE');
Super tuto, est ce qu'une maj avec SpamAssassin et ClamAV est prévue ?
Pas dans ce tuto pour ne pas l'alourdir encore plus. Peut-être dans un autre nommé "Installation de SpamAssassin, Clamav et Greylist" par exemple. A voir si j'ai le temps, peut-être que quelqu'un d'autre veut s'en occuper ? Pour le moment, je suis en train d'écrire le tuto d'Ossec.
Ah ouais l'installation de SpamAss & co c'est assez sympa, je sais que j'en avais bien chié pour le faire sur mon serveur mail 😀. Mais là ou j'ai le plus galéré et toujours pas d'actualité c'est opendkim, je ne sais pas pk ça veut pas être pris en compte. Mais je vais voir vu qu'on va installer ça sur une dizaine de domaine avec Alba, je vais voir pour intégrer grey & co à ton tuto et voir ce que ça donne si c'est concluant, je verrais avec Alba pour qu'on publie un truc sur la chose. Par contre ouais sans calendrier ça reste hyper bloquant pour ma part notamment dans un cadre pro, filer une messagerie sans calendrier bof bof.
Bonjour,

Alors déjà merci pour ce tuto c'est le plus compréhensible que j'ai lu sur le sujet. Rien que le schéma et les associations en nom de domaine principal, nom d'hîte, FQDN et MX permettent de mieux comprendre.

Je suis perdu au niveau de la configuration du nom de domaine.

Actuellement sur mon nom de domaine j'ai quelque chose comme ceci :
mail2.domain.tld MX mail2.domain.tld
mail2.domain.tld A IP du serveur

NB : J'ai mis mail2 parce que la doc OVH dit de mettre mail2...

Là je coince c'est pour associer le FQDN avec l'adresse IP du serveur.

Sur OVH quand je veux ajouter une entrée c'est obligatoirement "sous-domaine : xxxxx .domaine.tld
Donc je ne peux pas mettre de champ : hostname IN A ADRESSE_IP_4

Est-ce que la configuration est quand même possible ?
Est-ce que "mon serveur" doit faire office de serveur DNS ?

Actuellement sur dans la zone de DNS il y a des entrées qui étaient là par défault :
[url=ftp://ftp.domain.tld]ftp.domain.tld[/url] CNAME domain.tld
imap.domain.tld CNAME ssl0.ovh.net
mail.domain.tld CNAME ssl0.ovh.net
pop3.domain.tld CNAME ssl0.ovh.net
smtp.domain.tld CNAME ssl0.ovh.net

Les type CNAME si j'ai bien compris sont des redirections, je peux donc supprimer ces entrées?

Désolé si mes questions peuvent être noobesque, ça fait une semaine que je me documente,j’apprends doucement ^^

Merci, pour votre lecture.