Serveur Mail · 5 min read · Oct 29, 2025

Le Serveur Parfait - Serveur CentOS 4.8 x86_64 [ISPConfig 2] - Page 5

10 Postfix Avec SMTP-AUTH Et TLS

Maintenant nous installons Postfix et dovecot (dovecot sera notre serveur POP3/IMAP) :

yum install cyrus-sasl cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-md5 cyrus-sasl-plain postfix dovecot

Ensuite, nous configurons SMTP-AUTH et TLS :

postconf -e 'smtpd_sasl_local_domain ='
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'smtpd_sasl_security_options = noanonymous'
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_sasl_authenticated_header = yes'
postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
postconf -e 'inet_interfaces = all'
postconf -e 'mynetworks = 127.0.0.0/8'

Nous devons éditer /usr/lib64/sasl2/smtpd.conf afin que Postfix autorise les connexions PLAIN et LOGIN. Sur un Centos 4.8 32 bits, vous devez éditer le fichier /usr/lib/sasl2/smtpd.conf à la place. Il devrait ressembler à ceci :

vi /usr/lib64/sasl2/smtpd.conf

| pwcheck_method: saslauthd mech_list: plain login |

Ensuite, nous créons les certificats pour TLS :

mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

Ensuite, nous configurons Postfix pour TLS :

postconf -e 'smtpd_tls_auth_only = no'
postconf -e 'smtp_use_tls = yes'
postconf -e 'smtpd_use_tls = yes'
postconf -e 'smtp_tls_note_starttls_offer = yes'
postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key'
postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt'
postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem'
postconf -e 'smtpd_tls_loglevel = 1'
postconf -e 'smtpd_tls_received_header = yes'
postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
postconf -e 'tls_random_source = dev:/dev/urandom'

Ensuite, nous définissons le nom d’hôte dans notre installation Postfix (assurez-vous de remplacer server1.example.com par votre propre nom d’hôte) :

postconf -e 'myhostname = server1.example.com'

Après ces étapes de configuration, vous devriez maintenant avoir un /etc/postfix/main.cf qui ressemble à ceci (j’ai supprimé tous les commentaires) :

cat /etc/postfix/main.cf

| queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix mail_owner = postfix inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost unknown_local_recipient_reject_code = 550 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases debug_peer_level = 2 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin xxgdb $daemon_directory/$process_name $process_id & sleep 5 sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop html_directory = no manpage_directory = /usr/share/man sample_directory = /usr/share/doc/postfix-2.2.10/samples readme_directory = /usr/share/doc/postfix-2.2.10/README_FILES smtpd_sasl_local_domain = smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination mynetworks = 127.0.0.0/8 smtpd_tls_auth_only = no smtp_use_tls = yes smtpd_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom myhostname = server1.example.com |

Par défaut, le démon dovecot de CentOS ne fournit que des services IMAP et IMAPs. Comme nous voulons également POP3 et POP3s, nous devons configurer dovecot pour le faire. Nous éditons /etc/dovecot.conf et mettons la ligne protocols = imap imaps pop3 pop3s dedans :

vi /etc/dovecot.conf

| [...] # Répertoire de base où stocker les données d'exécution. #base_dir = /var/run/dovecot/ # Protocoles que nous voulons servir : # imap imaps pop3 pop3s protocols = imap imaps pop3 pop3s [...] |

Maintenant, démarrez Postfix, saslauthd et dovecot :

chkconfig --levels 235 sendmail off
chkconfig --levels 235 postfix on
chkconfig --levels 235 saslauthd on
chkconfig --levels 235 dovecot on
/etc/init.d/sendmail stop
/etc/init.d/postfix start
/etc/init.d/saslauthd start
/etc/init.d/dovecot start

Pour voir si SMTP-AUTH et TLS fonctionnent correctement, exécutez la commande suivante :

telnet localhost 25

Après avoir établi la connexion à votre serveur de messagerie Postfix, tapez

ehlo localhost

Si vous voyez les lignes

250-STARTTLS

et

250-AUTH PLAIN LOGIN

tout va bien.

[root@server1 ssl]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 server1.example.com ESMTP Postfix
ehlo localhost
250-server1.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250 8BITMIME
quit
221 Bye
Connection closed by foreign host.
[root@server1 ssl]#

Tapez

quit

pour revenir au shell du système.

10.1 Maildir

dovecot utilise le format Maildir (pas mbox), donc si vous installez ISPConfig sur le serveur, veuillez vous assurer d’activer Maildir sous Gestion -> Serveur -> Paramètres -> Email. ISPConfig fera alors la configuration nécessaire.

Si vous ne souhaitez pas installer ISPConfig, vous devez configurer Postfix pour livrer les e-mails dans le Maildir d’un utilisateur :

postconf -e 'home_mailbox = Maildir/'
postconf -e 'mailbox_command ='
/etc/init.d/postfix restart

11 Apache2 Avec PHP, Ruby, Python

Maintenant nous installons Apache avec PHP (c’est PHP 4.3.9 ; CentOS ne fournit pas de paquets PHP5) :

yum install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel

Ensuite, éditez /etc/httpd/conf/httpd.conf :

vi /etc/httpd/conf/httpd.conf

et changez DirectoryIndex à

| [...] DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl [...] |

Maintenant, configurez votre système pour démarrer Apache au démarrage :

chkconfig --levels 235 httpd on

Démarrez Apache :

/etc/init.d/httpd start

11.1 Désactiver PHP Globalement

(Si vous ne prévoyez pas d’installer ISPConfig sur ce serveur, veuillez ignorer cette section!)

Dans ISPConfig, vous configurerez PHP sur une base par site Web, c’est-à-dire que vous pouvez spécifier quel site Web peut exécuter des scripts PHP et lequel ne peut pas. Cela ne peut fonctionner que si PHP est désactivé globalement, car sinon tous les sites Web pourraient exécuter des scripts PHP, peu importe ce que vous spécifiez dans ISPConfig.

Pour désactiver PHP globalement, nous éditons /etc/httpd/conf.d/php.conf et commentons la ligne AddType :

vi /etc/httpd/conf.d/php.conf

| # # PHP est un langage de script intégré à HTML qui tente de faciliter la # tâche des développeurs pour écrire des pages web générées dynamiquement. # LoadModule php4_module modules/libphp4.so # # Fait en sorte que l'interpréteur PHP gère les fichiers avec une extension .php. # #AddType application/x-httpd-php .php # AddType application/x-httpd-php-source .phps # # Ajoute index.php à la liste des fichiers qui seront servis comme index # de répertoire. # DirectoryIndex index.php |

Ensuite, nous redémarrons Apache :

/etc/init.d/httpd restart

11.2 Installation de mod_ruby

Pour CentOS 4.8, il n’y a pas de paquet mod_ruby disponible, donc nous devons le compiler nous-mêmes. D’abord, nous installons quelques prérequis :

yum install httpd-devel ruby ruby-devel

Ensuite, nous téléchargeons et installons mod_ruby comme suit :

cd /tmp
wget http://modruby.net/archive/mod_ruby-1.3.0.tar.gz
tar zxvf mod_ruby-1.3.0.tar.gz
cd mod_ruby-1.3.0/
./configure.rb --with-apr-includes=/usr/include/apr-0
make
make install

Enfin, nous devons ajouter le module mod_ruby à la configuration d’Apache, donc nous créons le fichier /etc/httpd/conf.d/ruby.conf…

vi /etc/httpd/conf.d/ruby.conf

| LoadModule ruby_module modules/mod_ruby.so |

… et redémarrons Apache :

/etc/init.d/httpd restart

11.3 Installation de mod_python

Pour installer mod_python, il suffit d’exécuter…

yum install mod_python

… et redémarrez Apache ensuite :

/etc/init.d/httpd restart
Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.