5. Partie mise à jour auto :
Sources :
http://www.troubleshooters.com/linux/nullmailer/ [https://archive.is/e0kua] Screenshot_Archive_35
http://www.it-connect.fr/envoi-de-mail-avec-nullmailer/ [https://archive.is/y7CLH] Screenshot_Archive_36
https://opensourcehacker.com/2013/03/25/...boud-mail/ [https://archive.is/53AfU] Screenshot_Archive_37
http://blog.janjonas.net/2011-04-22/conf...entication [https://archive.is/LDyT1] Screenshot_Archive_38
http://forum.lowendspirit.com/viewtopic.php?id=1305 [https://archive.is/NISVp] Screenshot_Archive_39
Comme par la suite on va utiliser nullmailer pour recevoir des mails concernant les mises à jour automatique, il faut au préalable enlever exim4 qui peut être sur votre machine. Voici les commandes du tuto que je suis :
On installe nullmailer : (lors de son installation, laissez les paramètres par défaut, on va les modifier juste après)
Et donc on configure :
Dans le fichier "remotes" on met la config pour notre boite mail gandi (ou autre si vous voulez) :
et remplacez ce qu'il y a par
(modifiez avec votre adresse mail et votre mot de passe de boite mail)
Cela utilise le webmail de gandi que vous avez en prenant un domaine chez eux (12e/an environ). J'utilisais openmailbox auparavant, mais le service s'est dégradé et est devenu payant pour certaines fonctionnalités comme l'utilisation de smtp sans prévenir, service à fuir.
On change ensuite ses paramètres d'accès afin que d'autre processus de la machine n'ai pas accès à nos identifiants :
Les paramètres suivants servent à ce que l'expéditeur ait la même adresse mail que votre boite mail que vous utilisez afin qu'il n'y est pas d'erreur. J'avais un soucis, les mails ne voulaient pas être envoyé car de base via cron, l'utilisateur est root et le domaine associé est celui de votre machine. J'avais donc un mail du genre root@machine.tld au lieu de moi@mondomaine.tld. Pour palier à ceci, faire comme suit.
Dans "me" on met le nom de domaine de notre boite mail : (toujours dans /etc/nullmailer)
et donc dedans on met :
de même dans "defaulthost" et "defaultdomain".
On modifie aussi /etc/mailname
on remplace ce qu'il y a dedans par :
On change l'adresse admin pour nullmailer afin qu'on reçoive les messages d'erreur:
et dedans on met :
Note : Il s'agit de l'email sur lequel vous allez recevoir les mails.
Mais ce n'est pas tout, là nous n'avons que le bon domaine dans l'adresse mail, elle reste encore sous la forme root@mondomaine.tld
Pour résoudre cela on va utiliser le script suivant : https://github.com/benzinrts/nullmailer-from-patch
On fait comme dit dans le readme :
et on copie/colle le script :
Bien changer "moi" et "moi@mondomaine_gandi.tld" vers le début du code pour vos paramètres associés à votre boite mail.
On modifie les droits et on rend cela exécutable :
On en profite pour modifier d'autres trucs, indispensable ou non, je ne sais pas, j'avais des soucis et j'ai modif cela donc c'est une partie de ma config maintenant :
Source : http://raspberry.znix.com/2013/03/nullma...ry-pi.html
Et dedans vous mettez :
Puis :
Et dedans vous mettez rien, vous supprimez donc le contenu s'il y avait (voir source au dessus pour savoir pourquoi).
On relance nullmailer pour prendre en compte ces nouveaux paramètres :
On peut tester avec :
Vous devriez recevoir un mail test sans contenu.
Si soucis, pour débug vous pouvez regardez par là :
(ctrl+c pour en sortir)
ou
Les mails en attente sont dans /var/spool/nullmailer/queue/ pour les supprimer :
Note : Pour pouvoir les supprimer il faut se mettre en compte root, utiliser sudo seulement ne fonctionne pas, passez en root avec la commande "su".
On installe cronapt :
On ne va mettre automatiquement que les mises à jour de sécurité. Pour cela, il faut créer un nouveau fichier list qui ne contiendra que les dépôts de sécurité. On passe en root avec la commande "su" avant d'effectuer la commande suivante :
On repasse sous son utilisateur avec la commande "exit".
On va commenter ces lignes dans le fichiers de départ :
Et on commente en mettant des dièses devant les lignes :
On configure donc maintenant cron pour qu'il installe tout seul les majs et nous envoie un recap :
dedans on ajoute :
(vous modifiez le mail hein °°)
On modifie ensuite un petit peu un autre fichier pour qu'il installe bien les mises à jour dispo :
et dedans on enlève le "-d" pour que la seconde ligne devienne :
Ensuite on va mettre tout bien sa fréquence pour qu'il se lance lorsqu'on le désire :
et on commente la ligne d'exemple (avec un #) et on ajoute en fin de document cette nouvelle ligne :
La mise à jour se lancera tous les lundi à 5H du matin :
https://crontab.guru/#0_5_*_*_MON
Pour une autre fréquence, vous pouvez vous référez à : https://www.commentcamarche.net/contents...des-taches [https://archive.is/WP5ZR]
Vous pouvez faire un test en lançant la commande "sudo cron-apt" (peut prendre une ou deux minutes) et vous devriez recevoir directement le type de mail que vous aurez, du genre :
Note : Le temps d'attente des messages peut-être assez long, 30min à 1H lorsque c'est en mode auto via cron. Alors qu'en faisant un test avec "cron-apt", je recevais le mail dans la minute. Ne prenez donc pas peur si vous recevez pas tout de suite le mail après avoir mis la tâche cron toutes les deux minutes pour voir si ça marchait bien.
Note 2 : Après avoir laissé tourner une nuit complète, le lendemain j'avais un autre mail dans ma boîte :
Cela vient d'une tâche journalière, et il y a aussi une tâche hebdomadaire et mensuelle qui devrait nous donner la même erreur. Vous pouvez les voir dans "/etc/crontab". Pour régler le soucis, il faut reconfigurer correctement la variable langue, pour savoir laquelle est à utilisée, faîtes :
Personnellement, j'obtiens "LANG=en_US.UTF-8"
Ensuite vous faîtes :
Un écran s'affiche, dans la liste, vous déselectionnez ou sélectionnez avec la touche espace et donc dans la première liste, vous prenez seulement ce qui correspond à ce que vous avez obtenu.
Sources :
https://lists.debian.org/debian-user/201...00648.html [https://archive.fo/v5ZFT] Screenshot_Archive_40
https://redscreen.wordpress.com/2010/08/...e-correct/ [https://archive.is/seq5J] Screenshot_Archive_41
Note 4 : Vous pouvez vérifier les process qui demandent à être relancés après une mise à jour en utilisant checkrestart. On installe d'abord le paquet qui nous le permettra :
et ensuite il suffira de faire :
Source : http://www.pontikis.net/blog/simple-step...ian-server [http://archive.is/jKosq] Screenshot_Archive_42
Sources :
http://www.troubleshooters.com/linux/nullmailer/ [https://archive.is/e0kua] Screenshot_Archive_35
http://www.it-connect.fr/envoi-de-mail-avec-nullmailer/ [https://archive.is/y7CLH] Screenshot_Archive_36
https://opensourcehacker.com/2013/03/25/...boud-mail/ [https://archive.is/53AfU] Screenshot_Archive_37
http://blog.janjonas.net/2011-04-22/conf...entication [https://archive.is/LDyT1] Screenshot_Archive_38
http://forum.lowendspirit.com/viewtopic.php?id=1305 [https://archive.is/NISVp] Screenshot_Archive_39
Comme par la suite on va utiliser nullmailer pour recevoir des mails concernant les mises à jour automatique, il faut au préalable enlever exim4 qui peut être sur votre machine. Voici les commandes du tuto que je suis :
Code :
sudo dpkg -r exim4
sudo dpkg --purge exim4
On installe nullmailer : (lors de son installation, laissez les paramètres par défaut, on va les modifier juste après)
Code :
sudo apt install nullmailer
Et donc on configure :
Code :
cd /etc/nullmailer
Dans le fichier "remotes" on met la config pour notre boite mail gandi (ou autre si vous voulez) :
Code :
sudo nano remotes
Code :
mail.gandi.net smtp --port=465 --auth-login --user=moi@mondomaine_gandi.tld --pass=motdepasse --ssl
Cela utilise le webmail de gandi que vous avez en prenant un domaine chez eux (12e/an environ). J'utilisais openmailbox auparavant, mais le service s'est dégradé et est devenu payant pour certaines fonctionnalités comme l'utilisation de smtp sans prévenir, service à fuir.
On change ensuite ses paramètres d'accès afin que d'autre processus de la machine n'ai pas accès à nos identifiants :
Code :
sudo chown mail /etc/nullmailer/remotes
sudo chmod go-rwx /etc/nullmailer/remotes
Les paramètres suivants servent à ce que l'expéditeur ait la même adresse mail que votre boite mail que vous utilisez afin qu'il n'y est pas d'erreur. J'avais un soucis, les mails ne voulaient pas être envoyé car de base via cron, l'utilisateur est root et le domaine associé est celui de votre machine. J'avais donc un mail du genre root@machine.tld au lieu de moi@mondomaine.tld. Pour palier à ceci, faire comme suit.
Dans "me" on met le nom de domaine de notre boite mail : (toujours dans /etc/nullmailer)
Code :
sudo nano me
Code :
mondomaine_gandi.tld
de même dans "defaulthost" et "defaultdomain".
On modifie aussi /etc/mailname
Code :
cd /
sudo nano /etc/mailname
on remplace ce qu'il y a dedans par :
Code :
mondomaine_gandi.tld
On change l'adresse admin pour nullmailer afin qu'on reçoive les messages d'erreur:
Code :
sudo nano /etc/nullmailer/adminaddr
Code :
moi@mondomaine_reception.tld
Mais ce n'est pas tout, là nous n'avons que le bon domaine dans l'adresse mail, elle reste encore sous la forme root@mondomaine.tld
Pour résoudre cela on va utiliser le script suivant : https://github.com/benzinrts/nullmailer-from-patch
On fait comme dit dans le readme :
Code :
sudo mv /usr/sbin/sendmail /usr/sbin/sendmail-bin
sudo nano /usr/sbin/sendmail
et on copie/colle le script :
Code :
#!/bin/bash
# v1.0
# This script changes value of "-f" (<From>) argument of sendmail command when using nullmailer.
# If abscent, "-f" argument with value will be added to command line parameters.
# Script also changes "From" and "To" fields in email message (may be optional, see line 63).
# Tested with nullmailer v1.13-r5 on Gentoo Linux.
stdin=$(</dev/stdin)
optIndex="0"
# These vars are responsible for new <From> values.
# New value for "-f" argument.
newFrom="moi"
# New value for email "From" and "To" fields.
newAddress="moi@mondomaine_gandi.tld"
# Regexes for changing email "From" and "To" fields.
fromRE="From:(.*)<.*>"
fromChangeRE="From:\1<$newAddress>"
toRE="To:.*"
toChangeRE="To: $newAddress"
# Find (if present) the "-f" argument and store its value index.
# First ":" turns off verbose error reporting.
while getopts ":f:" flag; do
case $flag in
f) optIndex=$OPTIND
break
;;
esac
done
# Get list of current argumetns.
args=($@)
# $OPTIND starts from 1 and points to next arg.
# $@ starts from 0 so we need to subtract 2 from $optIndex.
# If "-f" is found, $optIndex will not be 0.
if (($optIndex != 0)); then
# "-f" is found. Change its value.
args[(($optIndex-2))]=$newFrom
# Set new arguments.
set -- "${args[@]}"
else
# "-f" is not found. Add "-f $newFrom" as first argument.
new_args=()
new_args[0]="-f"
new_args[1]=$newFrom
# Copy old argumetns to new array.
for ((i=0; i < ${#args[@]}; i++)) do
new_args[(($i+2))]=${args[$i]}
done
# Set new arguments.
set -- "${new_args[@]}"
fi
# Change both "From" and "To" fields to $newAddress in message body (some mail servers need this).
# Comment "sed" commands if you don't need such behaviour.
newMessage=$(echo "$stdin" | sed -E "0,/$fromRE/s//$fromChangeRE/" | sed -E "0,/$toRE/s//$toChangeRE/")
# Call original sendmail with new parameters and message.
echo "$newMessage" | /usr/sbin/sendmail-bin $@
On modifie les droits et on rend cela exécutable :
Code :
sudo chown 755 /usr/sbin/sendmail
sudo chmod +x /usr/sbin/sendmail
On en profite pour modifier d'autres trucs, indispensable ou non, je ne sais pas, j'avais des soucis et j'ai modif cela donc c'est une partie de ma config maintenant :
Source : http://raspberry.znix.com/2013/03/nullma...ry-pi.html
Code :
sudo nano /etc/nullmailer/defaulthost
Code :
mondomaine_gandi.tld
Puis :
Code :
sudo nano /etc/nullmailer/defaultdomain
On relance nullmailer pour prendre en compte ces nouveaux paramètres :
Code :
sudo /etc/init.d/nullmailer restart
On peut tester avec :
Code :
echo "Subject: test" | /usr/sbin/sendmail moi@mondomaine_reception.tld
Vous devriez recevoir un mail test sans contenu.
Si soucis, pour débug vous pouvez regardez par là :
Code :
sudo tail -f /var/log/mail.log /var/log/mail.err
ou
Code :
sudo tail -n 30 /var/log/syslog
Les mails en attente sont dans /var/spool/nullmailer/queue/ pour les supprimer :
Code :
rm -f /var/spool/nullmailer/queue/*
On installe cronapt :
Code :
sudo apt install cron-apt
On ne va mettre automatiquement que les mises à jour de sécurité. Pour cela, il faut créer un nouveau fichier list qui ne contiendra que les dépôts de sécurité. On passe en root avec la commande "su" avant d'effectuer la commande suivante :
Code :
grep security /etc/apt/sources.list > /etc/apt/sources.list.d/security.list
On va commenter ces lignes dans le fichiers de départ :
Code :
sudo nano /etc/apt/sources.list
Et on commente en mettant des dièses devant les lignes :
Code :
#deb http://security.debian.org/debian-security stretch/updates main contrib non-free
#deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free
On configure donc maintenant cron pour qu'il installe tout seul les majs et nous envoie un recap :
Code :
sudo nano /etc/cron-apt/config
dedans on ajoute :
Code :
APTCOMMAND=/usr/bin/apt-get
OPTIONS="-o quiet=1 -o Dir::Etc::SourceList=/etc/apt/sources.list.d/security.list"
MAILTO="moi@mondomaine_reception.tld"
MAILON="always"
On modifie ensuite un petit peu un autre fichier pour qu'il installe bien les mises à jour dispo :
Code :
sudo nano /etc/cron-apt/action.d/3-download
et dedans on enlève le "-d" pour que la seconde ligne devienne :
Code :
dist-upgrade -y -o APT::Get::Show-Upgraded=true
Ensuite on va mettre tout bien sa fréquence pour qu'il se lance lorsqu'on le désire :
Code :
sudo nano /etc/cron.d/cron-apt
et on commente la ligne d'exemple (avec un #) et on ajoute en fin de document cette nouvelle ligne :
Code :
0 5 * * MON root /usr/sbin/cron-apt
La mise à jour se lancera tous les lundi à 5H du matin :
https://crontab.guru/#0_5_*_*_MON
Pour une autre fréquence, vous pouvez vous référez à : https://www.commentcamarche.net/contents...des-taches [https://archive.is/WP5ZR]
Vous pouvez faire un test en lançant la commande "sudo cron-apt" (peut prendre une ou deux minutes) et vous devriez recevoir directement le type de mail que vous aurez, du genre :
Citation :CRON-APT RUN [/etc/cron-apt/config]: Mon Sep 4 22:06:16 CEST 2017
CRON-APT ACTION: 0-update
CRON-APT LINE: /usr/bin/apt-get -o quiet=1 -o Dir::Etc::SourceList=/etc/apt/sources.list.d/security.list update -o quiet=2
CRON-APT ACTION: 3-download
CRON-APT LINE: /usr/bin/apt-get -o quiet=1 -o Dir::Etc::SourceList=/etc/apt/sources.list.d/security.list autoclean -y
Reading package lists...
Building dependency tree...
Reading state information...
Del nullmailer 1:1.13-1.2 [92.3 kB]
Del libperl5.24 5.24.1-3+deb9u1 [3524 kB]
Del perl-modules-5.24 5.24.1-3+deb9u1 [2723 kB]
Del sudo 1.8.19p1-2.1 [1055 kB]
Del perl 5.24.1-3+deb9u1 [219 kB]
Del libopts25 1:5.18.12-3 [68.0 kB]
Del ntp 1:4.2.8p10+dfsg-3 [556 kB]
Del cron-apt 0.10.0 [26.3 kB]
CRON-APT LINE: /usr/bin/apt-get -o quiet=1 -o Dir::Etc::SourceList=/etc/apt/sources.list.d/security.list dist-upgrade -y -o APT::Get::Show-Upgraded=true
Reading package lists...
Building dependency tree...
Reading state information...
Calculating upgrade...
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Note : Le temps d'attente des messages peut-être assez long, 30min à 1H lorsque c'est en mode auto via cron. Alors qu'en faisant un test avec "cron-apt", je recevais le mail dans la minute. Ne prenez donc pas peur si vous recevez pas tout de suite le mail après avoir mis la tâche cron toutes les deux minutes pour voir si ça marchait bien.
Note 2 : Après avoir laissé tourner une nuit complète, le lendemain j'avais un autre mail dans ma boîte :
Citation :Sujet : Cron <root@vps323656> test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
/etc/cron.daily/man-db:
/usr/bin/mandb: can't set the locale; make sure $LC_* and $LANG are correct
Cela vient d'une tâche journalière, et il y a aussi une tâche hebdomadaire et mensuelle qui devrait nous donner la même erreur. Vous pouvez les voir dans "/etc/crontab". Pour régler le soucis, il faut reconfigurer correctement la variable langue, pour savoir laquelle est à utilisée, faîtes :
Code :
cat /etc/default/locale
Personnellement, j'obtiens "LANG=en_US.UTF-8"
Ensuite vous faîtes :
Code :
dpkg-reconfigure locales
Sources :
https://lists.debian.org/debian-user/201...00648.html [https://archive.fo/v5ZFT] Screenshot_Archive_40
https://redscreen.wordpress.com/2010/08/...e-correct/ [https://archive.is/seq5J] Screenshot_Archive_41
Note 4 : Vous pouvez vérifier les process qui demandent à être relancés après une mise à jour en utilisant checkrestart. On installe d'abord le paquet qui nous le permettra :
Code :
sudo apt install debian-goodies
et ensuite il suffira de faire :
Code :
sudo checkrestart
Source : http://www.pontikis.net/blog/simple-step...ian-server [http://archive.is/jKosq] Screenshot_Archive_42