3054
Commentaire: détails sur xx.auf.org et auf.org
|
6743
Mise à jour
|
Texte supprimé. | Texte ajouté. |
Ligne 3: | Ligne 3: |
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 relai smtp avec authentification, pour les postes nomades |
<<TableOfContents(2)>> 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 |
Ligne 10: | Ligne 12: |
= Domaine auf.org = | == Schéma général de la messagerie == |
Ligne 12: | Ligne 14: |
documenter : * postfix + mysql |
{{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`) |
Ligne 15: | Ligne 27: |
* secours * antispam + exceptions * transports pour ca.auf.org * messages d'erreur en français * choix de la valeur du delay avant warning |
* boîtes de secours * anti-spam + exceptions * transports pour `ca.auf.org` * choix de la valeur du délai avant avertissement (''warning'') |
Ligne 22: | Ligne 33: |
== Adresses en auf.org et ré-écriture des adresses == | === Adresses en auf.org et ré-écriture des adresses === |
Ligne 24: | Ligne 35: |
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 : | 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 : |
Ligne 32: | Ligne 43: |
Les adresses qui existent sont listée dans la variable {{{virtual_alias_maps}}} : | Les adresses qui existent sont listée dans la variable `virtual_alias_maps` : |
Ligne 41: | Ligne 52: |
* {{{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-main}}} : une expression reguliere, pour renvoyer tout ce qui ressemble à des adresses administratives mailman vers listes.auf.org. |
* `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`. |
Ligne 46: | Ligne 57: |
== Relai des sous-domaines auf.org == | === Relais des sous-domaines auf.org === |
Ligne 48: | Ligne 59: |
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. | 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`. |
Ligne 59: | Ligne 70: |
= Domaine ca.auf.org = | == Serveur pour le domaine ca.auf.org == |
Ligne 61: | Ligne 72: |
documenter : * config postfix + mysql * config dovecot + mysql * antispam + exceptions * port 587 + sasl + tls |
=== Postfix === |
Ligne 67: | Ligne 74: |
== basculement d'un domaine xx.auf.org en urgence sur le serveur imap de montréal == | 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}}}. |
Ligne 69: | Ligne 76: |
= Listes de diffusion = | === Dovecot === |
Ligne 71: | Ligne 78: |
* forwarding via smtp.ca.auf.org à travers le transport {{{auf:}}}. expliquer pourquoi * synchro des maillists. les scripts. |
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 |
Messagerie de Montréal
Sommaire
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
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)
- 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 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 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