Outils pour utilisateurs

Outils du site


admin:infrastructure:sympa

Ceci est une ancienne révision du document !


Interconnexion entre sympa et postfix

Pour rappel on a une architecture avec un relais mail qui gère tout ce qui entre/sort du cluster au niveau du mail. Le sympa est installé sur une machine séparée. Pour éviter la confusion on nommera guest la machine hébergeant le sympa et on nommera relais la machine hébergeant le postfix frontal.

On est ici dans une documentation a posteriori d'un truc un peu touchy, donc il est possible que des erreurs subsistent.

Postfix coté relais

Pour que le relais transmette les emails au bon guest, il faut installer les bons transports.

/etc/postfix/conf.d/40-sympa.conf
transport_maps = hash:/etc/postfix/transports/sympa, hash:/etc/postfix/transports/slow_domains, hash:/etc/postfix/transports/sympa-static

Par ailleurs il faut que le relais reconnaisse les transports comme des destinataires valides. Nous avons donc

/etc/postfix/conf.d/42-recipients.conf
local_recipient_maps = proxy:unix:passwd.byname $alias_maps $transport_maps

Examinons les définitions des transports :

  1. slow_domains : pour limiter le débit de soumission des courrier à des domaine pauvres comme laposte.net qui n'ont pas les moyens d'encaisser plus de 1 courriel à la fois. Ce n'est pas à proprement parler essentiel à sympa, mais de fait le besoin s'en fait largement sentir lorsqu'un sympa est installé.
    /etc/postfix/transports/slow_domains.map
    aliceadsl.fr slow:
    free.fr slow:
    hotmail.com slow:
    hotmail.fr slow:
    infonie.fr slow:
    laposte.net slow:
    libertysurf.fr slow:
    live.com slow:
    live.fr slow:
    orange.com slow:
    orange.fr slow:
    wanadoo.com slow:
    wanadoo.fr slow:
    yahoo.com slow:
    yahoo.fr slow:
  2. sympa-static : les adresses de services pour le sympa.
    /etc/postfix/transports/sympa-static.map
    sympa@chapril.org            smtp:[sympa.cluster.chapril.org]
    sympa-request@chapril.org    smtp:[sympa.cluster.chapril.org]
    sympa-owner@chapril.org      smtp:[sympa.cluster.chapril.org]
  3. sympa : c'est là que les sont les transports spécifiques aux listes. On verra plus tard sa fabrication.
    /etc/postfix/transports/sympa.map
    ## Généré automatiquement sur sympa.cluster.april.org via incron
    ## À copier dans mail.cluster.chapril.org:/etc/postfix/transports/
    ## List aliases used for the sympa mailing-list manager
    test@chapril.org                                                        smtp:[sympa.cluster.chapril.org]
    test-request@chapril.org                                                smtp:[sympa.cluster.chapril.org]
    test-editor@chapril.org                                                 smtp:[sympa.cluster.chapril.org]
    test-unsubscribe@chapril.org                                            smtp:[sympa.cluster.chapril.org]
    test-owner@chapril.org                                                  smtp:[sympa.cluster.chapril.org]

Postfix coté guest

C'est plus direct car basiquement on applique moins de contrôle. Une conf postfix satellite avec chapril.org en mailname et mail.cluster.chapril.org en relais suffit plus quelques adaptations. Cf Installation d'un postfix en satellite.

Les adaptations :

/etc/postfix/main.cf
# On sert localement le domaine chapril.org
mydestination = $myhostname, sympa.cluster.chapril.org, localhost.cluster.chapril.org, localhost, chapril.org
 
# D'ailleurs on a plein d'utilisateurs locaux @chapril.org, regardez
alias_maps =     hash:/etc/aliases hash:/etc/aliases.local hash:/etc/mail/sympa/aliases
alias_database = $alias_maps
 
# Mais en cas de doute on renvoit au relais
fallback_transport = smtp:[mail.cluster.chapril.org]
 
# On accepte de recevoir du mail depuis le relais
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.57
inet_interfaces = all

guest -> sympa

Là on retrouve la configuration d'un sympa classique, notamment :

main.cf
alias_maps = hash:/etc/aliases hash:/etc/aliases.local hash:/etc/mail/sympa/aliases

Notre fichier d'aliases est ainsi fait (on voit sa construction juste après) :

/etc/mail/sympa/aliases
## List aliases used for the sympa mailing-list manager
test: "| /usr/lib/sympa/bin/queue test@chapril.org"
test-request: "| /usr/lib/sympa/bin/queue test-request@chapril.org"
test-editor: "| /usr/lib/sympa/bin/queue test-editor@chapril.org"
#test-subscribe: "| /usr/lib/sympa/bin/queue test-subscribe@chapril.org"
test-unsubscribe: "| /usr/lib/sympa/bin/queue test-unsubscribe@chapril.org"
test-owner: "| /usr/lib/sympa/bin/bouncequeue test@chapril.org"

et

/etc/aliases.local
# default contact emails
postmaster:     listmaster@chapril.org
sympa-owner:    listmaster@chapril.org
sympa-request:  listmaster@chapril.org
sympa:          "| /usr/lib/sympa/bin/queue sympa@chapril.org"

Construction du fichier d'aliases sur le guest

En fait sympa fait ça tout seul comme un grand si on lui demande.

/etc/sympa/sympa/sympa.conf
sendmail_aliases /etc/mail/sympa/aliases
alias_manager    /usr/lib/sympa/bin/alias_manager.pl

Il est poli et exécute newaliases quand il a fini.

Si d'aventure le format de ce qui est généré ne vous satisfait pas, le template à modifier c'est /usr/share/sympa/default/list_aliases.tt2

Maintenant il faut pousser cette conf proprement sur le relais.

Création et installation du fichier d'aliases sur le relais

On va se faire aider de incron, qu'on va installer sur les deux machines. Incron permet de surveiller un évènement sur un fichier et de déclencher une action.

Pour l'installer :

apt install incron

puis simplement ajouter 'root' dans /etc/incron.allow.

Sur la machine guest

On va installer le programme suivant :

/usr/local/bin/alias_push.sh
#!/bin/bash
echo '## Généré automatiquement sur sympa.cluster.april.org via incron' > /etc/mail/sympa/sympa.map
echo '## À copier dans mail.cluster.chapril.org:/etc/postfix/transports/' >> /etc/mail/sympa/sympa.map
awk -F ':' '$1 !~ "#" && $1 !~ "^ *$" {print $1 "@chapril.org\t smtp:[sympa.cluster.chapril.org]"} $1 ~ "#[-#]"{ print $0}' /etc/mail/sympa/aliases | column -t -s $'\t' >> /etc/mail/sympa/sympa.map
scp /etc/mail/sympa/sympa.map mail.cluster.chapril.org:/etc/postfix/transports/sympa.map
cd /etc
git add /etc/mail/sympa/sympa.map /etc/mail/sympa/aliases /etc/mail/sympa/aliases.db
git commit -m 'MaJ des alias des listes'

ainsi que la directive incron suivante :

/etc/incron.d/sympa
/etc/mail/sympa/aliases IN_MODIFY,IN_NO_LOOP /usr/local/bin/alias_push.sh

qu'on va penser à rendre exécutable :

chown a+x /usr/local/bin/alias_push.sh

Puis on redémarre incron :

systemctl restart incron

Sur la machine relais

On va installer le programme suivant :

cat /usr/local/bin/alias_update.sh
#!/bin/bash
cd /etc/postfix && make && postfix reload
git add transports/sympa.map transports/sympa.db
git commit -m 'MaJ des alias des listes'

ainsi que la directive incron suivante :

/etc/incron.d/sympa
/etc/postfix/transports/sympa.map IN_MODIFY,IN_NO_LOOP /usr/local/bin/alias_update.sh

qu'on va penser à rendre exécutable :

chown a+x /usr/local/bin/alias_update.sh

Puis on redémarre incron :

systemctl restart incron
admin/infrastructure/sympa.1531850079.txt.gz · Dernière modification : 2018/07/17 17:54 de fpoulain