frangipane - email (scripts)
Scripts pour gérer les
Email.
Considérations générales
On ne laisse pas maildrop créer les répertoires tout seul, car ça impliquerait de mettre en dur dans
/etc/maildroprc le quota des nouvelles boîtes, et c'est moche.
Contraintes à implémenter
Comptes shell
La base n'empêche pas la création d'une boîte
@boum.org. C'est
donc la méthode de création de bam/alias qui devra vérifier.
Réciproquement, quand on crée un nouveau compte shell, nous devrons vérifier
qu'il ne correpond pas à 1 bam/alias déjà existant, et le cas échéant, ajouter
dans hash:/etc/postfix/transport la ligne correspondante à <nouveau compte
shell>@boum.org.
Travail pré-fGP
NB : cette page a été écrite avant la modélisation de franGiPane, il faut donc la retravailler sévèrement...
existe?(adresse_mail)
vérifie en interrogeant le serveur SMTP
créer_mail(adresse_mail, mot_de_passe=blabla, initialiser_boîte=oui)
SI le domaine n'est pas géré par nous (au niveau de Postfix, DNS, etc. ; cf ajout_domaine) ALORS exit(erreur: domaine étranger)
SI existe?(adresse_mail) reussit ALORS exit(erreur: cette adresse existe déjà)
SI il existe déjà une liste dont le nom est le même, y compris avec un autre nom de domaine ALORS exit(erreur: adresse non disponible)
Ajouter ce qu'il faut dans /etc/courier/userdb, en copiant/adaptant une ligne existante (attention a ne pas remplacer les tabulations par des espaces).
Mettre le bon mot de passe dans /etc/courier/userdb :
echo "$mot_de_passe" | userdbpw -md5 | sudo userdb $adresse_mail set systempw
Compiler /etc/courier/userdb en lançant makeuserdb
Créer, avec les bonnes permissions Unix, le $HOME de l'user virtuel : (/var/mail/domain.tld/user) :
sudo -u vmail mkdir /var/mail/DOMAIN.TLD/USER
sudo -u vmail chmod -R 750 /var/mail/DOMAIN.TLD/USER
sudo -u vmail chown -R vmail.vmail /var/mail/DOMAIN.TLD/USER
SI $initialiser_boîte == oui ALORS
sudo cp -a /root/politburo/frangipane/Maildir /var/mail/DOMAIN.TLD/USER/
cat /etc/maildrop/message_de_bienvenue | sudo maildrop -d $adresse_mail
FIN SI
Ajouter ce qu'il faut dans /etc/postfix/vmailbox (ou vmailbox-infokiosques, etc., si un fichier comme ça existe déjà pour ce domaine, sinon, dans vmailbox) ; puis le compiler avec sudo postmap /etc/postfix/vmailbox (en adaptant si c'est un autre fichier).
Si l'adresse EMAIL@boum.org correspond à un compte shell : ajouter une ligne à /etc/postfix/vtransport pour forcer Postfix à la considérer comme une boîte virtuelle.
Cleaner après soi si ça déconne.
importer_mail(adresse_mail, repertoire_boîte, fichier_mot_de_passe_crypté)
verifier que le repertoire est bon
SI créer_mail(adresse_mail, non) ne marche pas ALORS exit(erreur de créer_mail)
$maildir = /var/mail/DOMAINE.TLD/USER/Maildir
sudo cp -a $repertoire_boite/{*,.*} $maildir
SI les dossiers .Drafts OU .Sent existent ALORS les renommer respectivement en .Brouillons et .Envoy&AOk-s FIN SI
sudo rm $maildir/courierimap{subscribed,uiddb}
sudo chown -R vmail.vmail $maildir
sudo find $maildir -type d -exec chmod 750 {} \;
sudo find $maildir -type f -exec chmod 640 {} \;
Renommer les répertoires contenant des caractères non-ascii :
- é ->
&AOk-
- è ->
&AOg-
- ê ->
&AOo-
- à ->
&AOA-
- ç ->
&AOc-
- À ->
&AMA-
- É ->
&AMk-
- ô ->
&APQ-
Au pire on peut s'aider de http://www.topolis.lt/squirrelmail/utf7-imap.php
initialiser_boîte($adresse_mail)
(re)créer courierimapsubscribed avec ce qu'il faut dedans :
make_courierimapsubscribed $maildir
Mettre le bon mot de passe dans /etc/courier/userdb :
- si je connais le mot de passe en clair :
echo "$mot_de_passe" | userdbpw -md5 | sudo userdb $adresse_mail set systempw
- sinon :
echo "$mot_de_passe_crypté" | sudo userdb $adresse_mail set systempw
- dans tous les cas, lancer
sudo makeuserdb pour compiler le fichier
initialiser_boîte(adresse_mail)
$maildir = '/var/mail/DOMAINE.TLD/USER/Maildir'
SI $maildir/maildirsize existe ALORS l'effacer FIN SI
sudo -u vmail maildirmake $maildir
sudo -u vmail maildirmake -q 50000000S $maildir
SI $maildir/.Spam n'existe pas ALORS
sudo -u vmail maildirmake -f Spam $maildir
FIN SI
SI $maildir/.NonSpam n'existe pas ALORS
sudo -u vmail maildirmake -f NonSpam? $maildir
FIN SI
Mettre dans $maildir/courierimapsubscribed, en créant ce fichier si besoin (permissions 644, propriétaire vmail, groupe vmail) :
INBOX.Envoy&AOk-s
INBOX.NonSpam
INBOX.Spam
INBOX.Trash
INBOX.Brouillons
envoyer le mail de bienvenue :
cat /etc/maildrop/message_de_bienvenue | sudo maildrop -d $adresse_mail
supprimer_mail
MySQL
Supprimer les trucs qui concernent la boite dans la base SQL de Squirrelmail ; exemple :
$ mysql -h web.boum.org -u squirreluser -p squirrelmail
mysql> DELETE FROM userprefs WHERE user='test@infokiosques.net';
Postfix
- supprimer la ligne concernant la boite dans
/etc/postfix/vmailbox ; mettre à jour /etc/postfix/vmailbox.db: sudo postmap /etc/postfix/vmailbox
- supprimer, le cas echeant, la ligne concernant la boite dans
/etc/postfix/vtransport ; mettre à jour /etc/postfix/vtransport.db: sudo postmap /etc/postfix/vtransport
Courier
- supprimer la ligne concernant la boite dans
/etc/courier/userdb ; mettre à jour /etc/courier/userdb.db: sudo makeuserdb
Maildir
-
sudo rm -rf /var/mail/DOMAINE.TLD/USER/ pour supprimer ce qu'il reste de la boite (à savoir les mails...)
SquirrelMail
- supprimer le répertoire de données :
sudo rm -rf /var/lib/squirrelmail/data/USER@DOMAIN.TLD.gnupg/
créer_alias(adresse_alias, adresse_cible)
SI le domaine n'est pas géré par nous (au niveau de Postfix, DNS, etc. ; cf ajout_domaine) ALORS exit(erreur: domaine étranger)
SI existe?(adresse_alias) reussit ALORS exit(erreur: cette adresse existe déjà)
SI il existe déjà une liste dont le nom est le même, y compris avec un autre nom de domaine ALORS exit(erreur: adresse non disponible)
Ajouter ce qu'il faut dans /etc/postfix/valias et le compiler avec sudo postmap /etc/postfix/valias
cleaner après soi si ça déconne
supprimer_alias