#!/usr/bin/perl use strict; use POSIX; #script sous licence WTFPL http://sam.zoy.org/wtfpl/ # mathieu - http://blog.effraie.org/ #Créer un email pour un utilisateur, avec postfix & dovecot # #tester que le script est lancé avec les droits root my $uid = getuid(); if ($uid != 0) { print "Vous devez etre root pour lancer ce script.\n"; exit(0); } #récupérer le nom, le domaine, le pass print "Nom du nouvel utilisateur mail:" . "\n"; my $name = ; chomp($name); print "Domaine du nouveau mail:" . "\n"; my $domain = ; chomp($domain); print "Mot de passe:" . "\n"; my $clear_pass = ; chomp($clear_pass); my $newmail = "$name\@$domain"; #tests de base die "Le nom domaine n'est pas défini." . "\n" unless ($domain); die "Le nom n'est pas défini." . "\n" unless ($name); die "Le mot de passe n'est pas défini." . "\n" unless ($clear_pass); # vérifier la validité du domaine my $test_domain = "grep $domain /etc/postfix/vdomains > /dev/null"; system($test_domain); if ($? != 0) { print "le domaine n'est pas valide" . "\n"; exit (0); } # vérifier la validité du noveau mail my $test_mail = "grep $name\@$domain /etc/postfix/vmailbox > /dev/null"; system($test_mail); if ($? == 0) { print "Ce mail est déjà attribué" . "\n"; exit (0); } #saler le pass pour dovecot my $salted_pass = `dovecotpw -p $clear_pass`; chomp($salted_pass); #ajouter le mail dans postfix `echo "$newmail $domain/$name/" | tee -a /etc/postfix/vmailbox && postmap /etc/postfix/vmailbox`; #autoriser l'user dans dovecot `echo "$newmail:$salted_pass:5000:5000::::userdb_mail=maildir:/home/vmail/$domain/$name/" | tee -a /etc/dovecot/dovecot.users`; #redémarrer les services `/etc/init.d/postfix reload && /etc/init.d/dovecot restart 2>&1 /dev/null`; #envoyer un mail de bienvenue `cat /home/effraie/scripts/welcome_mail | mail $newmail -s "Bienvenue sur $domain !"`; print "le Mail $newmail a bien été créé, avec le pass: $clear_pass" . "\n"; exit (0);