Envoyer un mail à tous les utilisateurs du système

Bonjour

Comment faites-vous pour envoyer un message à tous les utilisateurs du système ?

Pour le moment les utilisateurs sont créés via un script qui les abonne à une liste sympa, mais cette solution ne me satisfait pas totalement.

Existe-t-il une solution intégrée ?

Merci

Bonjour
Lister l’annuaire ldap pour récupérer les comptes existants

ldapsearch -x -LLL uid=* | grep uid: | cut -d: -f2

Puis faire une boucle bash sur cette liste pour l’envoi du mail

Je pense que ça devrait le faire

Enfin, juste une idée, peut être existe t il une méthode plus adaptée

A suivre, ça m’intéresse aussi

1 Like

Oui c’est une idée. Mais ce n’est pas très simple d’utilisation.

J’ai pensé utiliser un alias de groupe sur le groupe Tous les utilisateurs mais le soucis est que l’adresse serait utilisable par des personnes (ou bot) extérieur, et j’aimerais éviter cela.

Bon voici un script (minimal) qui fonctionne

Créer un fichier mail-all-users.sh

#!/bin/bash

# Test validité des arguments
if [[ $# -ne 2 ]]; then
    echo "Nombre argument incorrect"
    echo "2 arguments nécessaires : le sujet et le nom du fichier du corps du mail"
    exit 
else
    echo "Nombre d'arguments correct"

    # Test  que le second argument soit un fichier
        if [[ -f $2 ]]; then 
           echo "Second argument valide"
        else
           echo "Le fichier indiqué n'est pas valide"
           exit
        fi
fi

corps=$(cat $2)
users=$(ldapsearch  -x -LLL uid=* | grep uid: | cut -d: -f2)


for line in $users
        do 
               echo  $corps | mail -s "$1" $line
        done

Il suppose que le corps du mail soit saisi dans un fichier au même niveau d’arborescence que le script

Lancement du script

mail-all-users.sh parametre1 parametre2

Avec paramètre 1 le sujet du mail et paramètre 2 le nom du fichier contenant le corps du mail

Exemple pour un fichier corps se nommant test_corps.txt au même niveau d’arborescence que le script, ça donnerait

mail-all-users.sh "sujet du jour" test_corps.txt

Voilà c’est fait en vitesse mais ça doit répondre à la demande :wink:

2 Likes

Merci pour la réponse et pour avoir pris le temps de rédiger. Je vais tester ça.

J’ai trouvé une solution qui fonctionne et je partage ici si ça peut intéresser d’autres personnes.

  • J’ai donc créé un alias de groupe pour le groupe cn=all_users via phpLDAPadmin.

  • Il faut ensuite modifier le fichier /etc/postfix/main.cf et rechercher la ligne smtpd_recipient_restrictions = pour ajouter juste après permit_mynetworks, :

    check_recipient_access hash:/etc/postfix/protected_destinations,
  • puis ajouter les deux lignes suivantes après le paragraphe:
smtpd_restriction_classes = insiders_only
insiders_only = check_sender_access hash:/etc/postfix/insiders, reject

Ce qui donne :

smtpd_recipient_restrictions =
    permit_mynetworks,
    check_recipient_access hash:/etc/postfix/protected_destinations,
    permit_sasl_authenticated,
    reject_non_fqdn_recipient,
    reject_unknown_recipient_domain,
    reject_unauth_destination,
    permit 

smtpd_restriction_classes = insiders_only
insiders_only = check_sender_access hash:/etc/postfix/insiders, reject
  • Ensuite, créer le fichier /etc/postfix/protected_destinations
monalias@mon.domaine     insiders_only
monalias2@mon.domaine2   insiders_only
  • Créer le fichier /etc/postfix/insiders
    mon.domaine       OK
    mon.domaine2      OK
  • On fait un restart ou un reload de postfix : systemctl restart postfix

  • Et pour finir et à faire après chaque modification des fichiers afin de créer ou mettre à jour les fichiers de mappage de postfix:
    postmap /etc/postfix/protected_destinations
    postmap /etc/postfix/insiders

Et voilà. Seules les adresses appartenant aux domaines enregistrés dans le fichier insiders pourrons envoyer des mails aux alias inscrits dans le fichier protected_destinations.

Les autres recevrons un beau message :

Undelivered Mail Returned to Sender

rejected: Access denied

Informations recueillies ici et

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.