frangipane - email (scripts)
Scripts pour gérer les Email.
Chose à se rappeler avant de commencer
- Les mails et la conf pour les consulter (le serveur imaps/pop3s, dovecot) est dans la VM "ptt", c'est là qu'il faut aller pour toutes les manipulations qui concernent le $HOME, ou le maildir, de l'utilisateur, évoqué plus tard, ainsi que le fichier userdb.
- Par contre, le serveur smtp (postfix) lui est dans la VM "smtp".
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/dovecot/userdb
dans la VM ptt, en copiant/adaptant une ligne existante.
Mettre le bon mot de passe dans /etc/dovecot/userdb
:
dovecotpw -s SHA512-CRYPT
vous demandera le mot de passe et vous donnera le hash du mot de passe comme il faut à copier dans le champ password.
Créer, avec les bonnes permissions Unix, le $HOME
de l'user virtuel toujours
dans la VM ptt : (/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 -u vmail maildirmake /var/mail/DOMAIN.TLD/USER/Maildir
sudo -u vmail maildirmake -q 50000000S /var/mail/DOMAIN.TLD/USER/Maildir
cat /etc/dovecot/message_de_bienvenue | sudo -u vmail /usr/lib/dovecot/deliver -d $adresse_mail -f root@boum.org
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 le fichier "subscriptions" dans le Maildir/ dans la VM ptt.
Mettre le bon mot de passe dans /etc/dovecot/userdb
:
si je connais le mot de passe en clair :
dovecotpw -s SHA512-CRYPT
vous demandera le mot de passe et vous donnera le hash à mettre dans le champs password.
- sinon, y'a qu'a copier direct dans le fichier userdb après le "{SHA512-CRYPT}".
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
envoyer le mail de bienvenue : cat /etc/dovecot/message_de_bienvenue | sudo -u vmail /usr/lib/dovecot/deliver -d $adresse_mail -f root@boum.org
supprimer_mail
MySQL
Supprimer les trucs qui concernent la boite dans la base SQL de RoundCube ; exemple :
$ mysql -h mailsql.boum.org -u roundcube -p roundcube
DELETE FROM contacts WHERE user_id = (SELECT user_id FROM users where username='test');
DELETE FROM contacts WHERE user_id = (SELECT user_id FROM users where username='test@infokiosques.net');
DELETE FROM identities WHERE user_id = (SELECT user_id FROM users where username='test');
DELETE FROM identities WHERE user_id = (SELECT user_id FROM users where username='test@infokiosques.net');
DELETE FROM users WHERE username='test';
DELETE FROM users WHERE username='test@infokiosques.net';
Postfix
- commenter la ligne concernant la boite dans
/etc/postfix/vmailbox
; mettre à jour/etc/postfix/vmailbox.db
:sudo postmap /etc/postfix/vmailbox
- commenter, le cas echeant, la ligne concernant la boite dans
/etc/postfix/vtransport
; mettre à jour/etc/postfix/vtransport.db
:sudo postmap /etc/postfix/vtransport
Dovecot
- supprimer la ligne concernant la boite dans
/etc/dovecot/userdb
Maildir
sudo wipe -r /var/mail/DOMAINE.TLD/USER/
dans la VM ptt pour supprimer ce qu'il reste de la boite (à savoir les mails...)
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