www.starend.org

TechNIX

Tags

cron crond logs syslog mail postfix relais

Remonter les mail de compte rendu des tâches cron

24/03/2008

1/Introduction

Sur les serveurs UNIX dont Linux, le démon CRON qui gère les tâches planifiées et récurrentes pose une trace du lancement de chaque tâche dans les logs (syslog). Et il envoie le compte rendu (contenu de la console virtuelle) de la tâche en question à l'utilisateur propriétaire de la tâche dans sa boite au lettre. Boite au lettre locale par défaut.

Ici, je vous propose de faire envoyer les mails vers de vraies boites aux lettres. Pour cela il faut installer un mini serveur de messagerie, et lui dire de renvoyer les mails de tel utilisateur local vers tel adresse email externe...

Exemple d'une tâche CRON :

# m h dom mon dow user  command
30 */6  * * *   update  /update/update.sh

Ici est lancé pour l'utilisateur 'update' la commande '/update/update.sh'. Elle est lancée à la 30ème minute de l'heure, toutes les 6 heures, tous les jours du mois, tous les mois, tous les jours de la semaine. En clair tous les jours à 0h30 6h30 12h30 et 18h30.

Je vous conseil notament de faire en sorte que les différents serveurs, si il y a, soient bien synchronisés au niveau de l'heure. Voir openntpd et ntpdate...

2/Service de messagerie local avec Postfix

Pourquoi postfix? Et pourquoi pas? C'est celui que j'utilise habituellement. Mais ça marche tout aussi bien avec exim qmail ou sendmail...

Ah oui, et je suis sous Debian 'Etch'.

Installer :

aptitude install postfix

Choisir pour la configuration de postfix :
- Système satellite.
- Le nom de courrier identique au FQDN du nom d'hôte (hostname+domaine dns).
- Le serveur relais qui relaiera les mails, dans mon cas : mail.starend.lan

Ce qui donne dans mon cas sur neptune le fichier de configuration /etc/postfix/main.cf :

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
myhostname = neptune.starend.lan
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = neptune.starend.lan, localhost.starend.lan, localhost
relayhost = mail.starend.lan
mynetworks = 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only

Supprimer la ligne 'mydestination'. Tous les paramètres en *_tls_* sont inutiles dans ce type de fonctionnement et peuvent être supprimés.

On obtient une fois dégraissé :

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
myhostname = neptune.starend.lan
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
relayhost = mail.starend.lan
mynetworks = 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only

Redémarrer postfix :

/etc/init.d/postfix restart

Dans ce mode, postfix n'écoute pas sur le réseau. M'enfin presque, uniquement sur le loopback (inet_interfaces = loopback-only), ce qui revient au même. Il ne peut donc pas servir pour relayer des messages en dehors de l'hôte.

Cette configuration de postfix peut être façilement changée en lancant :

dpkg-reconfigure postfix

3/Forward des mail

Dernière étape, dire à postfix les mails de tel utilsateur doivent être renvoyés vers tel autre adresse email.

Ajouter ou modifier le fichier /etc/aliases :

update: webmaster@starend.org
...

Faire prendre en compte les nouveaux alias par postfix :

postalias /etc/aliases

4/Ca marche?

Vous devez avoir ce genre de chose dans les logs de l'hôte :

Mar 24 13:45:02 neptune /USR/SBIN/CRON[12369]: (root) CMD (/usr/bin/id)
Mar 24 13:45:02 neptune postfix/cleanup[12372]: 7AC2F1406B: message-id=<20080324124502.4D6921406A@neptune.starend.lan>
Mar 24 13:45:02 neptune postfix/qmgr[12354]: 7AC2F1406B: from=, size=734, nrcpt=1 (queue active)
Mar 24 13:45:02 neptune postfix/smtp[12375]: 7AC2F1406B: to=, orig_to=,
                        relay=mail.starend.lan[10.254.25.1]:25, delay=0.29, delays=0.15/0.05/0.04/0.04, dsn=2.0.0,
                        status=sent (250 2.0.0 Ok: queued as 0602B1007F)
Mar 24 13:45:02 neptune postfix/qmgr[12354]: 7AC2F1406B: removed

Et recevoir le message évidement :-)

Licence Creative Common 2007 :: BY-NC-SA :: Webdesign DENDIEVEL Stéphane