Configuration · 6 min read · Feb 14, 2026

Configuration du serveur de messagerie avec Exim, MySQL, Cyrus-Imapd, Horde Webmail sur Centos 5.1 - Page 2

Configuration

Configurer Apache

  • Activer l’hébergement virtuel et créer le virtualhost par défaut, éditez /etc/httpd/conf/httpd.conf et ajoutez à la fin NameVirtualHost *:80 ServerAdmin [email protected]
  • Créez le virtual host pour horde webmail ajoutez ceci sous le précédent Servername mail.home.topdog-software.com DocumentRoot /usr/share/horde ErrorLog logs/mail-error_log CustomLog logs/mail-access_log common
  • Activez les paramètres de sécurité de horde éditez le fichier /etc/httpd/conf.d/horde.conf et définissez comme ci-dessous #Alias /horde /usr/share/horde Options +FollowSymLinks php_admin_flag safe_mode off php_admin_flag magic_quotes_runtime off php_flag session.use_trans_sid off php_flag session.auto_start off php_admin_flag file_uploads on #php_admin_flag allow_url_fopen on php_value post_max_size 20M php_value upload_max_filesize 10M php_admin_value open_basedir "/usr/share/horde:/usr/share/horde/config:/usr/share/pear:/tmp" php_admin_flag register_globals off Order Deny,Allow Deny from all Order Deny,Allow Deny from all
  • Augmentez la limite de mémoire PHP éditez /etc/php.ini et changez en dessous memory_limit = 64M
  • Activez horde sous SSL éditez /etc/httpd/conf.d/ssl.conf et ajoutez ce qui suit au virtualhost par défaut entre les balises default:443> Servername mail.home.topdog-software.com:443 DocumentRoot /usr/share/horde

Configurer Exim

  • Changez le MTA pour exim
 system-switch-mail (sélectionnez exim)

Vérifications Anti-virus / Sanesecurity

  • Configurez Exim (/etc/exim/exim.conf) pour utiliser clamav pour scanner les e-mails entrants et rejeter les e-mails infectés par des virus ainsi que le spam d’images et de pdf au moment du smtp
av_scanner = clamd:/var/run/clamav/clamd.sock

RBL’s

  • Configurez les RBL’s sous acl_check_rcpt: drop message = REJETÉ parce que $sender_host_address est dans une liste noire spamhaus.org dnslists = zen.spamhaus.org drop message = REJETÉ parce que $sender_host_address est dans une liste noire à $dnslist_domain\n$dnslist_text dnslists = bl.spamcop.net drop message = REJETÉ parce que $sender_host_address est dans une liste noire à $dnslist_domain\n$dnslist_text dnslists = dnsbl.sorbs.net

Anti Spam

  • Si vous souhaitez rejeter les messages des serveurs sans dns inverse, ajoutez ceci sous acl_check_rcpt:, il y a une liste d’exceptions à laquelle vous pouvez ajouter des domaines où l’acl ne doit pas être appliqué et essaie de livrer un message test à l’adresse d’envoi pour vérifier si l’expéditeur est valide. drop message = REJETÉ - Nous n'acceptons pas les messages des hôtes sans DNS inverse log_message = Pas de DNS inverse domains = ! lsearch;/etc/exim/checks_exempt_hosts !verify = reverse_host_lookup !verify = sender/callout=2m,defer_ok !condition = ${if eq{$sender_verify_failure}{} }
  • Pour rejeter les messages des clients qui ne fournissent pas de HELO/EHLO, ajoutez ceci à acl_check_rcpt: drop message = REFUSÉ - pas de salutation HELO/EHLO log_message = l'hôte distant n'a pas présenté de salutation condition = ${if def:sender_helo_name {false}{true}}
  • Vous pouvez également limiter le taux de connexions à votre serveur, ajoutez ceci à acl_check_connect: pour ce faire (lisez la documentation d’exim sur les paramètres si vous souhaitez l’ajuster pour votre site) deny ratelimit = 250 / 15m / strict message = Vous ne pouvez envoyer que $sender_rate par $sender_rate_period log_message = Taux : $sender_rate/$sender_rate_period (max $sender_rate_limit) accept
  • Arrêtez les bots de spam indésirables de détruire votre machine smtp_accept_max_nonmail = 30 smtp_max_unknown_commands = 1
  • Ne pas annoncer le pipelining pipelining_advertise_hosts =
  • Activez les vérifications de Spamassassin spamd_address = /var/run/spamassassin/spamd.sock
  • Rejetez tous les messages avec un score supérieur à 6 au moment du smtp. (acl_check_data) accept condition = ${if >={$message_size}{100000} {1}} add_header = X-Spam-Note: SpamAssassin run bypassed due to message size warn spam = nobody/defer_ok add_header = X-Spam-Flag: OUI accept condition = ${if !def:spam_score_int {1}} add_header = X-Spam-Note: L'invocation de SpamAssassin a échoué warn add_header = X-Spam-Score: $spam_score ($spam_bar)\n\# X-Spam-Report: $spam_report drop condition = ${if >{$spam_score_int}{60} {1}} message = Votre message a obtenu $spam_score points SpamAssassin. Le rapport suit :\n\ $spam_report

Routage des mails

  • Activez l’accès à la base de données Mysql hide mysql_servers = localhost/horde/horde/hordepassword
  • Modifiez le routeur de livraison local pour livrer à cyrus mais vérifiez l’adresse e-mail de l’utilisateur avant la livraison (dans la section des routeurs de exim.conf) localuser: driver = accept local_parts = ${lookup mysql {SELECT REPLACE(user_uid,'${quote_mysql:@$domain}','') \ as user FROM horde_users WHERE user_uid='${quote_mysql:$local_part@$domain}'}{$value}} transport = local_delivery cannot_route_message = Utilisateur inconnu
  • Créez un transport pour livrer à cyrus via le socket lmtp local_delivery: driver = lmtp socket = /var/lib/imap/socket/lmtp batch_max = 50 user = cyrus

Authentification SMTP

  • Ajoutez ce qui suit à la section d’authentification de /etc/exim/exim.conf plain: driver = plaintext public_name = PLAIN server_prompts = : server_set_id = $2 server_condition = ${if saslauthd{{$2}{$3}{pop}}{1}{0}} server_advertise_condition = true login: driver = plaintext public_name = LOGIN server_prompts = "Nom d'utilisateur:: : Mot de passe::" server_condition = ${if saslauthd{{$1}{$2}{pop}}{1}{0}} server_set_id = $1 server_advertise_condition = true

Exemple de configuration complète

Téléchargez le fichier de configuration complet ici.

Configurer Mysql

  • Désactivez le réseau TCP éditez /etc/my.cnf et ajoutez ce qui suit dans la section mysqld skip-networking
  • Définir le mot de passe root /usr/bin/mysqladmin -u root password ‘new-password’
    /usr/bin/mysqladmin -u root -h your_host_name password ‘new-password’ -p

Configurer Horde

  • Éditez le fichier sql et changez le mot de passe mysql pour l’utilisateur horde cp /usr/share/horde/scripts/sql/create.mysql.sql .
    vi create.mysql.sql REPLACE INTO user (host, user, password) VALUES ( 'localhost', 'horde', -- IMPORTANT : Changez ce mot de passe ! PASSWORD('hordepassword') );
  • Créez l’utilisateur et remplissez la base de données horde mysql -p < create.mysql.sql
  • Créez les tables pour turba (carnet d’adresses) mysql -p horde < /usr/share/horde/turba/scripts/sql/turba_objects.mysql.sql
  • Créez les tables pour kronolith (calendrier) mysql -p horde < /usr/share/horde/kronolith/scripts/sql/kronolith.mysql.sql

Configuration de Horde

  • Créez la configuration de base de horde /usr/share/horde/config/conf.php
  • Définissez les préférences de horde pour faire de la messagerie web l’application par défaut lors de la connexion. Éditez le fichier /usr/share/horde/config/prefs.php et modifiez $prefs[‘initial_application’] pour qu’il ressemble à ceci ``` $_prefs[‘initial_application’] = array( ‘value’ => ‘imp’, ‘locked’ => true, ‘shared’ => true, ‘type’ => ‘select’, ‘desc’ => sprintf((“Quelle application %s doit-elle afficher après la connexion ?”), $GLOBALS[‘registry’]->get(‘name’)) ); ```
  • Faites en sorte que horde fonctionne depuis la racine par défaut des serveurs web, éditez /usr/share/horde/config/registry.php et modifiez $this?applications[‘horde’] comme ci-dessous $this->applications['horde'] = array( 'fileroot' => dirname(__FILE__) . '/..', 'webroot' => '', 'initial_page' => 'login.php', 'name' => _("Horde"), 'status' => 'active', 'templates' => dirname(__FILE__) . '/../templates', 'provides' => 'horde' );
Share: X/Twitter LinkedIn

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

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