Outils pour utilisateurs

Outils du site

scandir échoué
scandir échoué
scandir échoué

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
200messagerie:040postfix4:050_kadobonus [le 15/11/2009 à 08:52] prof200messagerie:040postfix4:050_kadobonus [Date inconnue] (Version actuelle) – supprimée - modification externe (Date inconnue) 127.0.0.1
Ligne 1: Ligne 1:
-{{keywords>postfix sympa mailing-lists listes diffusion}} 
-====== Cadeau bonus ====== 
-Pour ceux qui ne seraient pas satisfaits de la façon dont nous avons interfacé Sympa avec Postfix, voici une autre piste qui préserve d'avantage les ressources système en cas de « spam storm ». 
  
-===== Les transports ===== 
-Nous le savons, il est possible de définir des transports particuliers dans le fichier ''master.cf'' de postfix. 
- 
-Nous pouvons en définir un certain nombre qui font référence à ''/usr/lib/sympa/bin/queue''. Voici ce que nous pouvons ajouter dans notre ''master.cf'' : 
-<code> 
-# 
-# Les « pipes » sympa 
-# ou 
-# Les transports du gestionnaire de listes sympa 
-# 
-sympalist        unix  -                               pipe 
-  flags=RF user=sympa argv=/usr/lib/sympa/bin/queue ${user}@${extension} 
-symparequest     unix  -                               pipe 
-  flags=RF user=sympa argv=/usr/lib/sympa/bin/queue ${user}-request@${extension} 
-sympaeditor      unix  -                               pipe 
-  flags=RF user=sympa argv=/usr/lib/sympa/bin/queue ${user}-editor@${extension} 
-sympasubscribe   unix  -                               pipe 
-  flags=RF user=sympa argv=/usr/lib/sympa/bin/queue ${user}-subscribe@${extension} 
-sympaunsubscribe unix  -                               pipe 
-  flags=RF user=sympa argv=/usr/lib/sympa/bin/queue ${user}-unsubscribe@${extension} 
-sympabounce      unix  -                               pipe 
-  flags=RF user=sympa argv=/usr/lib/sympa/bin/bouncequeue ${user}@${extension} 
-</code> 
- 
-Nous reconnaissons des syntaxes assez proches de celles que nous avons vues dans ''/etc/mail/sympa.aliases''. Il nous faudra réaliser une « map » des transports à emprunter suivant l'adresse du message à envoyer à Sympa. 
-===== Alias virtuels ===== 
-Nous allons exploiter les propriétés des extensions d'adresses, avec le ''recipient_delimiter'' : 
-  recipient_delimiter = + 
- 
-Ainsi que les possibilités de réécriture d'adresses avec les alias virtuels de Postfix. La compréhension de ce mécanisme n'est pas d'une grande simplicité, il faut bien le dire. 
-==== Extension d'adresse ==== 
-Si nous écrivons quelque chose comme ''%%truc+bidule@undomaine.quelconque%%'', la partie à gauche du ''@'' va être séparée en deux : 
-  * la partie à gauche du ''+'' (truc) sera récupérée dans la variable ''${user}'' ; 
-  * la partie à droite du ''+'' (bidule) sera récupérée dans la variable ''${extension}''. 
- 
-Compte tenu des transports que nous avons créés dans ''master.cf'', nous voyons bien que cette possibilité va nous servir. 
- 
-==== Alias virtuels ==== 
-Une table d'alias, nous l'avons compris à force, permet de remplacer une adresse par une autre. Nous pouvons exploiter les expressions régulières dans ces tables, et n'allons pas nous en priver. Créons par exemple un fichier ''/etc/postfix/sympa_virtual_aliases'' qui contiendrait, compte tenu de nos essais précédents, ceci : 
-<code> 
-/^(sympa|listmaster)\@lists\.nain-t\.net$/    $1+lists.nain-t.net@sympalist. 
-/^(liste1)-(request|editor|owner|subscribe|unsubscribe)\@lists\.nain-t\.net$/  $1+lists.nain-t.net@sympa$2. 
-/^(liste1)\@lists\.nain-t\.net$/  $1+lists.nain-t.net@sympalist. 
- 
-/^(sympa|listmaster)\@lists\.machin\.net$/    $1+lists.machin.net@sympalist. 
-/^(liste1)-(request|editor|owner|subscribe|unsubscribe)\@lists\.machin\.net$/  $1+lists.machin.net@sympa$2. 
-/^(liste1)\@lists\.machin\.net$/  $1+lists.machin.net@sympalist. 
-</code> 
-Vous ne lisez toujours pas les expressions régulières dans le texte ? Tant pis pour vous. 
- 
-Soit une adresse qui serait par exemple ''%%liste1-unsubscribe@lists.machin.net%%''. Elle sera remplacée par ''%%liste1+lists.machin.net@sympaunsubscribe%%''. Curieux comme adresse non ? 
- 
-Mais attendons la suite, nous comprendrons mieux plus tard. 
- 
- 
-===== Transport à la carte ===== 
-Créons un fichier nommé par exemple ''/etc/postfix/sympa_transport_maps'' qui contiendrait ceci : 
-<code> 
-/^.*\@sympalist$/         sympalist: 
-/^.*\@symparequest$/      symparequest: 
-/^.*\@sympaeditor$/       sympaeditor: 
-/^.*\@sympasubscribe$/    sympasubscribe: 
-/^.*\@sympaunsubscribe$/  sympaunsubscribe: 
-/^.*\@sympaowner$/        sympabounce: 
-</code> 
-(Oui ! Encore des expressions régulières). 
- 
-Par exemple, un message desitiné à une adresse qui aurait dans sa partie « domaine » (à droite du ''@'' la valeur ''sympaunsubscribe'' et seulement cette valeur, sera transmise au transport ''sympaunsubscribe''. 
- 
-Reprenons notre exemple précédent.  
-  - Postfix a reçu un message pour ''%%liste1-unsubscribe@lists.machin.net%%'' ; 
-  - cette adresse a donc été transformée en ''%%liste1+lists.machin.net@sympaunsubscribe%%'' à cause de la table d'alias virtuels ; 
-  - la table des transports dit qu'un message dont l'adresse du destinataire se termine par ''sympaunsubscribe'' doit être transmise au transport du même nom ; 
-  - le transport en question (''/usr/lib/sympa/bin/queue'' que nous connaissons déjà) va donc recevoir un message avec une adresse de destination de la forme ''%%${user}-unsubscribe@${extension}%%''. 
- 
-  * Notre ''${user}'', c'est ''liste1'' ; 
-  * notre ''${extension}'', c'est ''lists.machin.net''. 
- 
-L'adresse communiquée au transport est donc finalement ''%%liste1-unsubscribe@lists.machin.net%%''. Astucieux non ? Je vous rassure, votre serviteur n'a pas inventé un truc aussi compliqué (et aussi efficace). Il s'est contenté de le trouver [[http://www.folly.org.uk/sympa/sympa_config_03.html|ici]]. 
- 
-===== Et finalement... ===== 
-Dans postfix, à part ajouter les transports dans ''master.cf'', il faut invoquer le ''récipient-delimiter'' : 
-  recipient_delimiter = + 
- 
-Invoquer la carte des transports : 
-  transport_maps=regexp:/etc/postfix/sympa_transport_maps 
- 
-Invoquer la table des alias virtuels : 
-  virtual_alias_maps = mysql:/etc/postfix/db/virtual-alias.cf, regexp:/etc/postfix/sympa_virtual_aliases 
- 
-==== Avantage ==== 
-Cette méthode élimine les expressions plus génériques que nous avions employées dans la première solution, évitant ainsi d'envoyer du spam à sympa (ce qui ne l'est pas), Postfix refusant directement ces messages qui ne sont plus pour lui dans ses destinataires connus. Autrement dit, contrairement à la solution d'origine où un message à ''%%albert@lists.machin.net%%'' aurait été transmis à Sympa et c'est sympa qui l'aurait rejeté, ici, c'est Postfix qui va le rejeter directement. 
- 
-==== Inconvénient ==== 
-A chaque création d'une nouvelle liste, il faudra intervenir manuellement sur le fichier ''/etc/postfix/sympa_virtual_aliases'' car les alias construits par ''alias_manager.pl'' ne sont ici d'aucune utilité. 
- 
-Comme ce script utilise des « templates tt2 » il reste peut-être un espoir pour qu'un expert trouve un modèle qui apporte une réponse à la question. Faute de quoi, il faut écrire un autre script pour automatiser cette tâche. 
Cadeau bonus: Dernière modification le: 15/11/2009 à 08:52 par prof