[Script Bash] Envoyer un mail avec PJ + cron
OS version: Centos 6.8
Pour mon 2eme script, je cherche a envoyer un mail avec une PJ.
Chaque lundi a 9h30 il récupère des fichiers sur une machine en réseau et les envois par mail.
Installer le paquet mutt
1 |
$ sudo yum install mutt |
Modification du fichier Muttrc pour changer le from
1 |
$ sudo vim /etc/Muttrc |
Dé-commenter et renseigner les champs
1 2 |
set from="adresse mail" set realname="nom d'utilisateur" |
Modification de Postfix
1 |
$ sudo vim /etc/postfix/main.cf |
Dé-commenter et renseigner le fichier de conf postfix
1 |
relayhost = smtp.domaine.tld |
restart postfix
1 |
$ sudo service postfix restart |
Ajouter règle dans l’Iptables
1 |
$ sudo vim /etc/sysconfig/iptables |
1 |
-A OUTPUT -p tcp --dport 25 -j ACCEPT |
Ouvrir également les ports smb, netbios, rpc 135,137 en TCP et UDP, 138 en UDP, 139 en TCP, et le 445 en TCP et UDP
1 |
$ sudo vim /etc/sysconfig/iptables |
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 |
# RPC -A INPUT -m state --state NEW -p TCP --dport 135 -j ACCEPT -A INPUT -m state --state NEW -p UDP --dport 135 -j ACCEPT -A OUTPUT -m state --state NEW -p TCP --dport 135 -j ACCEPT -A OUTPUT -m state --state NEW -p UDP --dport 135 -j ACCEPT # NetBios-NS -A INPUT -m state --state NEW -p TCP --dport 137 -j ACCEPT -A INPUT -m state --state NEW -p UDP --dport 137 -j ACCEPT -A OUTPUT -m state --state NEW -p TCP --dport 137 -j ACCEPT -A OUTPUT -m state --state NEW -p UDP --dport 137 -j ACCEPT # NetBios-DGM -A INPUT -m state --state NEW -p UDP --dport 138 -j ACCEPT -A OUTPUT -m state --state NEW -p UDP --dport 138 -j ACCEPT # NetBios-SSN -A INPUT -m state --state NEW -p TCP --dport 139 -j ACCEPT -A OUTPUT -m state --state NEW -p TCP --dport 139 -j ACCEPT # SMB/IP -A INPUT -m state --state NEW -p TCP --dport 445 -j ACCEPT -A INPUT -m state --state NEW -p UDP --dport 445 -j ACCEPT -A OUTPUT -m state --state NEW -p TCP --dport 445 -j ACCEPT -A OUTPUT -m state --state NEW -p UDP --dport 445 -j ACCEPT |
Redémarrer iptables et saveuvegarder
1 2 |
$ sudo service iptables restart $ sudo iptables-save |
Créer un script pour monter un lecteur réseau et envoyer par mail des fichiers (pdf dans mon cas)
1 |
$ sudo vim /usr/local/sbin/script_mail |
1 2 3 4 5 6 7 8 9 |
#!/bin/bash if [ ! -d "/mnt/repertoire_partage" ];then echo "Création du répertoire de montage pour Windows"; mkdir /mnt/repertoire_partage fi mount //192.168.3.253/partage /mnt/c$ -o username=administrateur,password=Motdepasse cd /mnt/partage/Documents\ and\ Settings/Administrateur/Bureau/ echo "Message dans le corps du texte " | mutt -s "Objet du message" -a *fichier_a_envoyer*.pdf -- adresse@domaine.tld mv *.pdf archives/ |
/!\ Description du script
Je vérifie si le répertoire existe et je monte un lecteur réseau qui est une machine sous Windows.
J’attaque le partage administratif et je vais chercher le chemin complet.
J’envoi plusieurs fichiers avec un nom différent d’où le caractère *, puis une fois le mail envoyé je deplace les fichiers .pdf vers un répertoire archives pour que le lundi suivant il puisse répéter l’opération.
Rendre le script exécutable
1 |
$ sudo chmod +x /usr/local/sbin/script_mail |
Puis un cron
1 |
$ crontab -e |
30 9 * * * /usr/local/sbin/script_mail
Rappel sur le cron
*(minutes 0-59) ou */(toutes les x minutes 0-59)
*(heures 0-23)
*(jours du mois 1-31)
*(mois 1-12)
*(jours de la semaine 0 a 6 -> 0=dimanche ou 1 a 7 -> 1=lundi)