Debian: unattended-upgrades – автообновление системы и пакетов

Автор: | 24/07/2017

Для автоматического обновления установленных пакетов и системы в Debian используется пакет unattended-upgrades.

Страница на Debian-wikiтут>>>. Аналогичный механизм для CentOSyum-cron, описан тут>>>.

Установка, настройка unattended-upgrades

Устанавливаем пакет:

[simterm]

$ sudo apt -y install unattended-upgrades

[/simterm]Конфигурационный файл – /etc/apt/apt.conf.d/50unattended-upgrades.

Что бы получать уведомления о проблемах с апдейтами – раскомментируем строку:

...
Unattended-Upgrade::Mail "root";
...

И для активации автоматического ребута при необходимости (после установки нового ядра, например):

...
Unattended-Upgrade::Automatic-Reboot "true";
...
Unattended-Upgrade::Automatic-Reboot-Time "02:00";
...

Активируем автоапдейты, проверяем файл /etc/apt/apt.conf.d/20auto-upgrades:

[simterm]

$ cat /etc/apt/apt.conf.d/20auto-upgrades 
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

[/simterm]

Если его нет – первоначальную настройку можно выполнить с помощью dpkg-reconfigure:

[simterm]

# dpkg-reconfigure -plow unattended-upgrades

[/simterm]

Запускаем для проверки вручную, включив verbose, debug и apt-debug:

[simterm]

$ sudo unattended-upgrades -v -d --apt-debug     
Initial blacklisted packages: 
Initial whitelisted packages: 
Starting unattended upgrades script
Allowed origins are: ['o=Ubuntu,a=xenial', 'o=Ubuntu,a=xenial-security', 'o=UbuntuESM,a=xenial']
adjusting candidate version: 'apt=1.2.15ubuntu0.2'
adjusting candidate version: 'apt-transport-https=1.2.15ubuntu0.2'
...
djusting candidate version: 'wget=1.17.1-1ubuntu1.1'
marking linux-cloud-tools-4.4.0-47-generic for remove
marking linux-cloud-tools-4.4.0-47 for remove
Packages that are auto removed: 'linux-cloud-tools-4.4.0-47 linux-cloud-tools-4.4.0-47-generic'
(Reading database ... 96630 files and directories currently installed.)
Removing linux-cloud-tools-4.4.0-47-generic (4.4.0-47.68) ...
Removing linux-cloud-tools-4.4.0-47 (4.4.0-47.68) ...
Packages were successfully auto-removed
InstCount=0 DelCount=2 BrokenCount=0
Extracting content from '/var/log/unattended-upgrades/unattended-upgrades-dpkg.log' since '2017-07-24 13:00:31'
No '/usr/bin/mail' or '/usr/sbin/sendmail',can not send mail. You probably want to install the 'mailx' package.
Found /var/run/reboot-required, rebooting
Shutdown scheduled for Tue 2017-07-25 02:00:00 UTC, use 'shutdown -c' to cancel.

[/simterm]

Настройка почты

Ubuntu 16.04, свежеустановленная, обращаем внимание на сообщение:

No ‘/usr/bin/mail’ or ‘/usr/sbin/sendmail’,can not send mail. You probably want to install the ‘mailx’ package.

Устанавливаем mailutils:

[simterm]

$ sudo apt install -y mailutils

[/simterm]

Проверяем отправку почты:

[simterm]

$ echo TestMail | mail -s Test root

[/simterm]

Проверяем почтовый ящик рута:

[simterm]

# mail
"/var/mail/root": 1 message 1 new
>N   1 Ubuntu             Mon Jul 24 13:18  13/848   Test
? 
Return-Path: <jmadmin@***.asgaqmzoya1ebbq1oirk0uw30g.ax.internal.cloudapp.net>
X-Original-To: root@***.asgaqmzoya1ebbq1oirk0uw30g.ax.internal.cloudapp.net
Delivered-To: root@***.asgaqmzoya1ebbq1oirk0uw30g.ax.internal.cloudapp.net
Received: by ***.asgaqmzoya1ebbq1oirk0uw30g.ax.internal.cloudapp.net (Postfix, from userid 1000)
        id 27374BD2FF; Mon, 24 Jul 2017 13:18:29 +0000 (UTC)
Subject: Test
To: <root@***.asgaqmzoya1ebbq1oirk0uw30g.ax.internal.cloudapp.net>
X-Mailer: mail (GNU Mailutils 2.99.99)
Message-Id: <20170724131829.27374BD2FF@***.asgaqmzoya1ebbq1oirk0uw30g.ax.internal.cloudapp.net>
Date: Mon, 24 Jul 2017 13:18:29 +0000 (UTC)
From: jmadmin@***.asgaqmzoya1ebbq1oirk0uw30g.ax.internal.cloudapp.net (Ubuntu)

[/simterm]

Переадресация почты root

И добавляем переадресацию на внешний ящик.

Редактируем файл /etc/aliases, в конец его добавляем:

[simterm]

# tail -n 1 /etc/aliases
root: [email protected]

[/simterm]

Обновляем:

[simterm]

# newaliases

[/simterm]

Настройка From почты root

Меняем поле From при отправке.

Редактируем /etc/postfix/main.cf, в конце файла добавляем:

...
smtp_generic_maps = hash:/etc/postfix/generic

В файле /etc/postfix/generic добавляем адрес для рута (первое поле – текущий адрес От, можно увидеть в логах, воторое поле – реальный ящик, который будет подставляться в From):

[simterm]

# cat /etc/postfix/generic
root@***.asgaqmzoya1ebbq1oirk0uw30g.ax.internal.cloudapp.net [email protected]

[/simterm]

Перезапускам Postfix:

[simterm]

$ sudo postmap /etc/postfix/generic
$ sudo service postfix reload

[/simterm]

Проверяем отправку:

[simterm]

# echo TestMail | mail -s TestExternalAndFrom root

[/simterm]

Лог отправки:

[simterm]

# cat /var/log/mail.* | grep C4D79BD2FF
Jul 24 13:53:04 ubuntu postfix/pickup[51093]: C4D79BD2FF: uid=0 from=<root@***.asgaqmzoya1ebbq1oirk0uw30g.ax.internal.cloudapp.net>
Jul 24 13:53:04 ubuntu postfix/cleanup[51100]: C4D79BD2FF: message-id=<20170724135304.C4D79BD2FF@***.asgaqmzoya1ebbq1oirk0uw30g.ax.internal.cloudapp.net>
Jul 24 13:53:04 ubuntu postfix/qmgr[51094]: C4D79BD2FF: from=<root@***.asgaqmzoya1ebbq1oirk0uw30g.ax.internal.cloudapp.net>, size=581, nrcpt=1 (queue active)
Jul 24 13:53:04 ubuntu postfix/cleanup[51100]: CA78BBD300: message-id=<20170724135304.C4D79BD2FF@***.asgaqmzoya1ebbq1oirk0uw30g.ax.internal.cloudapp.net>
Jul 24 13:53:04 ubuntu postfix/local[51102]: C4D79BD2FF: to=<root@***.asgaqmzoya1ebbq1oirk0uw30g.ax.internal.cloudapp.net>, relay=local, delay=0.06, delays=0.04/0/0/0.02, dsn=2.0.0, status=sent (forwarded as CA78BBD300)
Jul 24 13:53:04 ubuntu postfix/qmgr[51094]: C4D79BD2FF: removed

[/simterm]

Лог на сервере-получателе:

[simterm]

$ sudo cat /var/log/maillog | grep C4D79BD2FF
[sudo] password for setevoy: 
Jul 24 16:53:05 venti spamd[21961]: spamd: checking message <20170724135304.C4D79BD2FF@***.asgaqmzoya1ebbq1oirk0uw30g.ax.internal.cloudapp.net> for nobody:99
Jul 24 16:53:05 venti spamd[21961]: spamd: result: . 4 - RCVD_IN_PBL,RDNS_NONE scantime=0.2,size=1125,user=nobody,uid=99,required_score=5.0,rhost=localhost,raddr=127.0.0.1,rport=48580,mid=<20170724135304.C4D79BD2FF@***.asgaqmzoya1ebbq1oirk0uw30g.ax.internal.cloudapp.net>,autolearn=no
Jul 24 16:53:05 venti dovecot: lda([email protected]): msgid=<20170724135304.C4D79BD2FF@***.asgaqmzoya1ebbq1oirk0uw30g.ax.internal.cloudapp.net>: saved mail to INBOX

[/simterm]

Готово.