= Messagerie de Montréal = <> Le système de messagerie de Montréal gère plusieurs aspects de la messagerie de l'agence : * le MX principale du domaine `auf.org` * la messagerie locale du domaine `ca.auf.org`, avec un serveur IMAP * les listes de diffusions dans le domaine `auf.org` * un relais SMTP avec authentification, pour les postes nomades * les boîtes aux lettres de secours == Schéma général de la messagerie == {{attachment:schéma général.png}} [[attachment:schéma général.svg]] == Serveur pour le domaine auf.org == Documenter : * Postfix + MySQL * hôte : (localhost) smtp.ca.auf.org * bd : mail * tables : * auforg_virtual : pour les redirections vers p.n@secours et p.n@xx.auf.org (`/etc/postfix/auforg_virtual.cf`) * auf_org_alias : pour les alias en @auf.org (`/etc/postfix/mysql-alias-auforg.cf`). http://aliasauforg.auf est une interface django/admin pour la gestion de ces alias. * vacations * boîtes de secours * anti-spam + exceptions * transports pour `ca.auf.org` * choix de la valeur du délai avant avertissement (''warning'') * choix de la valeur d'expiration des mails en queue === Adresses en auf.org et ré-écriture des adresses === Aucune boite aux lettres n'est présente sur ce serveur, tous les domaines en destination finale sont traités en domaines virtuels (liste des domaines dans la variable `virtual_alias_domains`). Cela permet d'activer le `smtpd_reject_unlisted_sender` pour rejeter les adresses en `...@auf.org` qui n'existerait pas : {{{ # pour rejeter les mails from: xxx@auf.org avec xxx qui n'existerait pas smtpd_reject_unlisted_sender = yes unverified_sender_reject_code=550 }}} Les adresses qui existent sont listée dans la variable `virtual_alias_maps` : {{{ # attention : expressions regulieres dans le fichier mailman : # toujours le laisser en dernier virtual_alias_maps = proxy:mysql:/etc/postfix/auforg_virtual.cf, hash:/etc/postfix/virtual-auf.org, regexp:/etc/postfix/virtual-mailman }}} * `auforg_virtual.cf` : une table MySQL qui correspond à la liste du personnel, extraite automatiquement du PostgreSQL de `intranet.auf`. * `virtual-auf.org` : un fichier ''hash'' géré à la main, pour toutes les exceptions * `virtual-mailman` : une expression régulière, pour renvoyer tout ce qui ressemble à des adresses administratives Mailman vers `listes.auf.org`. === Relais des sous-domaines auf.org === Le domaine `auf.org` est géré directement par le serveur, en destination finale, via `virtual_alias_domains`, qui ne tiens pas compte des sous-domaines. La variable `relay_domains` doit donc seulement tenir compte des sous-domaines `xx.auf.org`. {{{ # a lire comme "tous les sous-domaines de auf.org SAUF auf.org lui-meme relay_domains = .auf.org,!auf.org # a verifier, mais on peut *suremement* laisser cette variable completement vide # l'important est que relay_domains ne soit pas listé dedans parent_domain_matches_subdomains = debug_peer_list,fast_flush_domains,mynetworks,permit_mx_backup_networks,qmqpd_authorized_clients,smtpd_access_maps }}} == Serveur pour le domaine ca.auf.org == === Postfix === La configuration postfix mysql est [[Postfix/BackendMysql|classique]], basée sur les virtual_mailbox_domains pour les domaines ''ca.auf.org'' et ''secours''. Les paramètres d'accés à mysql sont définis dans {{{/etc/postfix/virtual_mailbox_maps.cf}}}. La tâche {{{/etc/cron.d/synchro-mysql}}} effectue une synchronisation régulière avec la base de données postgresql présente sur {{{intranet.auf}}}. === Dovecot === La configuration dovecot mysql est tout aussi [[Dovecot/BackendMysql|classique]], si ce n'est que la requête permet l'authentification avec ou sans le "@auf.org" final de l'adresse email (pour des raisons de compatibilité avec l'historique). {{{ password_query = SELECT username as user, password FROM users WHERE username='%u' or (%n=username and %d='auf.org') }}} /!\ Pour le moment, l'option {{{disable_plaintext_auth = no}}} (mot de passe en clair sur un canal en clair) a été laissée activée, le temps que tous les clients sont basculés en "TLS : OUI", d'ici la fin décembre 2007. Il faudra repasser cette option à "= yes" dès que les derniers clients de messagerie auront été reconfigurés. === Anti-Spam === + les exceptions === Reception de mail sur le port 587 (submission) avec TLS et authentification obligatoire === C'est une configuration TLS+SASL classique, avec le service submission activé dans le `master.cf`. Voir [[Postfix/Chiffrement]] et [[Postfix/Authentification]]. Une particularité se situe au niveau de PAM, car dans la table MySQL on a deux lignes pour chaque source : la ligne vers @xx.auf.org et la ligne vers @secours. Pour que la requête SQL ne renvoie qu'un seul résultat valide (celui concernant @xx.auf.org), on y ajoute une contrainte `WHERE length(password)>1` qui indique que la ligne doit posséder un mot de passe de plus d'un caractère (c'est-à-dire différent de "!", mais comme on ne peut mettre de guillemets dans la ligne de configuration de ce module PAM... astuces, astuces...). Le fichier `/etc/pam.d/smtp` : {{{ # (attention, la suite ne fait que deux lignes, c'est votre nagivateur web qui coupe) auth required pam_mysql.so user=messagerie passwd=vousrevez host=localhost db=mail table=auforg_virtual [where=length(password)>1] usercolumn=source passwdcolumn=password crypt=1 account sufficient pam_mysql.so user=messagerie passwd=vousrevez host=localhost db=mail table=auforg_virtual [where=length(password)>1] usercolumn=source passwdcolumn=password crypt=1 }}} == Basculement d'un domaine xx.auf.org en urgence sur le serveur IMAP de Montréal == == Synchronisation des comptes utilisateurs == Les données des comptes proviennent de la base postgresql "AUF" sur {{{intranet.auf}}}. Une synchronisation régulière est faite avec les bases mysql utilisées par les divers composant du système de messagerie. La synchronisation se fait par un script lancé à intervalles réguliers sur intranet.auf. Les fichiers correspondant sont : ||'''Fichier'''||'''Description'''|| ||/usr/local/sbin/synchro-mail-mysql.pl||Script de synchronisation|| ||/etc/synchro-mail-mysql.conf||Fichier de configuration|| ||/etc/cron.d/synchro-mail-mysql||Fichier ''cron'' d'execution régulière|| Voir les commentaires du fichier de configuration pour en connaitre le format. Les tables synchronisées sont : * users * auforg_virtual * auforg_vacation == Listes de diffusion == * forwarding via `smtp.ca.auf.org` à travers le transport `auf:` ; expliquer pourquoi * synchro' des listes de diffusions ; les scripts