Gmail, on le sait tous, est un outil très répandu. Souvent même dans le monde de l’entreprise avec Google Apps. Pourquoi alors ne pas l’utiliser pour envoyer des alertes, logs ou autres sauvegardes depuis un serveur Linux ? Allons-y…
Pour envoyer un e-mail depuis un script
il-y-a en général un passage obligé : un serveur SMTP en local. Hum, trop peu
pour moi, surtout pour envoyer un log tous les mois ! Heureusement Esmtp
est
là. C’est un outil formidable et simplissime qui n’a qu’un seul rôle : servir
de relais STMP. Autrement dit, il est incapable d’envoyer un e-mail
directement, mais seulement de le transmettre à un autre serveur SMTP.
La base : ESMTP
Commencez par installer le package (ici sur Debian/Ubuntu) :
apt-get install esmtp
Créez, si il
n’existe pas, le fichier ~./esmtprc
et changez ses droits :
touch ~/.esmtprc
chmod 0700 ~/.esmtprc
Passons au contenu du fichier, je le rappelle, propre à Gmail :
#file ~/.esmtprc
identity example@gmail.com
hostname smtp.gmail.com:587
username "example@gmail.com"
password "p@ssw0rd"
starttls required
Gmail utilisant tls (ssl),
il va vous falloir obtenir le certificat qu’il utilise. On va donc récupérer
les principaux certificats utilisés sur le web, avec [man]curl[/man]
:
1 2 3 4 5 |
|
Attention à bien mettre les bons droits sur les répertoires, sans quoi cela ne fonctionnera pas (plus de détails dans la suite).
Et pour envoyer un bête mail ?
Un simple script fera l’affaire :
1 2 3 4 5 6 7 8 9 10 |
|
[man]esmtp[/man]
prends ici deux options : -t
pour lire l’entête, -v
pour le mode verbeux.
Si tout se passe bien vous obtiendrez une sortie dans ce style… et un e-mail
à l’autre bout bien entendu :
Connected to MTA
StartTLS OK (128 bits)
From example@gmail.com: 250 OK k7sm4581630wej.2
To copain@example.com: 250 OK k7sm4581630wej.2
Message data: .
Message sent: 250 OK 1280951004 k7sm4581630wej.2
Disconnected to MTA
Sinon, rappelez vous des droits sur les certificats :
Connected to MTA
StartTLS extension not supported by MTA
Disconnected to MTA
0 (null)
example@gmail.com: 0 (null)
Et avec une pièce jointe ?
Dans ce cas je n’ai pas, pour le moment, trouvé d’autre solution que
d’installer [man]sendmail[/man]
avant tout. Il va servir d’interface, en
tant que daemon, avec Esmtp.
apt-get install sendmail
Une Perl
vous pouvez utiliser un script Perl par exemple :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
Attention ici aux type Mime (cf. Global MIME Types) pour le fichier joint…
Python !
Ou du python (j’aime :)). On crée un module générique (source : Send email with attachment(s) in Python) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
Et son appel :
1 2 3 4 5 |
|
Bon envois ;-)