Гид по технологиям

Автоматическая отправка ежедневных писем со статистикой сервера

• 7 min read • Администрирование • Обновлено 29 Nov 2025
Автоматические ежедневные письма со статистикой
Автоматические ежедневные письма со статистикой

TL;DR

Получать один ежедневный e‑mail с ключевой информацией о сервере удобно и экономит время. В статье описаны готовые скрипты и шаги для Ubuntu (ssmtp + mailutils + cron) и для Windows 8.1 (SendEmail + PowerShell + Планировщик заданий). Также включены рекомендации по безопасности, чек-листы, проверкам и устранению неполадок.

Быстрые ссылки

  • Автоматические письма в Linux
  • Написание скрипта для отправки писем в Linux
  • Автоматические письма в Windows
  • Написание скрипта для отправки писем в Windows

Схема автоматической отправки статистики сервера

Важно ежедневно проверять логи и ключевые статистики сервера, но ручная проверка утомительна. Лучше получать одно сводное письмо с основными показателями — тогда не придётся каждый раз заходить на сервер. Этот материал покажет, как настроить автоматическую рассылку для Ubuntu и Windows 8.1 с использованием Gmail в качестве SMTP‑сервера. Инструкции легко адаптируются для других дистрибутивов и почтовых сервисов.

Автоматические письма в Linux

Для примера мы используем Ubuntu и два пакета: ssmtp и mailutils. На большинстве современных систем ssmtp может быть заменён на msmtp или postfix — см. раздел «Альтернативные подходы» дальше.

Установите пакеты:

sudo apt-get update
sudo apt-get install ssmtp mailutils

Отредактируйте файл конфигурации ssmtp:

sudo vi /etc/ssmtp/ssmtp.conf

Пример содержимого файла (замените username и password на свои данные или используйте специализированные учётные данные):

# Адрес, который будет получать письма (при необходимости замените на свой адрес)
root=username@gmail.com
# SMTP‑сервер (оставьте, если используете Gmail)
mailhub=smtp.gmail.com:587
# Домен, от имени которого будут отправляться письма
rewriteDomain=gmail.com
# Адрес отправителя
hostname=username@gmail.com
# SSL/TLS настройки, требуются для Gmail и большинства почтовых серверов
UseTLS=Yes
UseSTARTTLS=Yes
# Имя пользователя и пароль от аккаунта Gmail
AuthUser=username
AuthPass=password
# Разрешить переопределение адреса From
FromLineOverride=yes

Важно: ваш пароль хранится в файле в открытом виде, поэтому необходимо защитить файл правами доступа.

sudo chmod 640 /etc/ssmtp/ssmtp.conf
sudo chown username.username /etc/ssmtp/ssmtp.conf

Примечание. Более безопасный вариант — сделать владельцем root, но тогда скрипту придётся запускаться с sudo и потребуется ввод пароля при первом выполнении, что нарушит автоматизацию. На общих серверах рассмотрите использование учётной записи с ограниченными правами или отдельного почтового аккаунта лишь для рассылок.

Проверим отправку тестового письма:

echo "Testing" | mail -s "Testing mail setup" username@gmail.com

В теле письма будет слово “Testing”, а тема — “Testing mail setup”. Проверьте входящие.

Написание скрипта для отправки писем в Linux

Теперь, когда отправка работает из командной строки, создадим простой bash‑скрипт, который соберёт базовую информацию о системе и отправит её на указанный адрес.

Создайте файл /home/geek/script.sh с таким содержимым (скорректируйте пути и имя пользователя):

#!/bin/bash
# Простой ежедневный отчёт: диск, пользователи, процессы
OUTPUT=/home/geek/email.txt

echo "Hard drive space:" > $OUTPUT
df -h >> $OUTPUT

echo "Users currently logged in:" >> $OUTPUT
who >> $OUTPUT

echo "Running processes:" >> $OUTPUT
ps -e >> $OUTPUT

# Отправка письма
cat $OUTPUT | mail -s "Daily server information" username@gmail.com

# Удаляем временный файл
rm $OUTPUT

Сделайте скрипт исполняемым:

chmod +x /home/geek/script.sh

Пример результата письма показан на изображении ниже.

/wordpress/wp-content/uploads/2013/11/2-emails.jpg

Когда скрипт отработал корректно, настроим cron для ежедневного запуска в 02:00:

crontab -e

Добавьте строку для запуска в 02:00:

0 2 * * * /home/geek/script.sh

Проверьте crontab и логи cron (обычно /var/log/syslog или systemd‑journal) при необходимости.

Автоматические письма в Windows

На Windows удобнее использовать стороннее небольшое приложение для отправки почты из командной строки. В примере используется SendEmail (бесплатная утилита), совместимая с Gmail и Планировщиком заданий.

Скачайте SendEmail (TLS‑версию), распакуйте архив и поместите папку, например, в C:\SendEmail.

Откройте командную строку (cmd) и перейдите в папку:

cd C:\SendEmail

Отправьте тестовое письмо командой:

sendEmail -f username@gmail.com -t username@gmail.com -s smtp.gmail.com:587 -xu username -xp password -u "Test email subject" -m "This is a test email."

Параметры:

  • sendEmail — исполняемый файл
  • -f — адрес отправителя
  • -t — адрес получателя
  • -s — SMTP‑сервер
  • -xu — имя учётной записи
  • -xp — пароль
  • -u — тема
  • -m — тело письма

Проверьте входящие.

Написание скрипта для отправки писем в Windows

Используем PowerShell для сбора данных и SendEmail для отправки. Откройте PowerShell ISE (powershell_ise.exe) и создайте скрипт c расширением .ps1, например C:\SendEmail\daily-email.ps1:

# Простая ежедневная сводка для Windows
$Output = "C:\SendEmail\info.txt"
"C: Drive Usage:" | Out-File -FilePath $Output -Encoding utf8
Get-WmiObject win32_LogicalDisk -Filter "DeviceID='C:'" | Select-Object Size,FreeSpace | Out-File -Append -FilePath $Output -Encoding utf8

"Running processes:" | Out-File -Append -FilePath $Output -Encoding utf8
get-process | Out-File -Append -FilePath $Output -Encoding utf8

"SMB shares:" | Out-File -Append -FilePath $Output -Encoding utf8
get-smbshare | Out-File -Append -FilePath $Output -Encoding utf8

# Отправка через sendEmail
$typeCommand = "type $Output | C:\SendEmail\sendEmail -f username@gmail.com -t username@gmail.com -s smtp.gmail.com:587 -xu username -xp password -u \"Daily server info\""
Invoke-Expression $typeCommand

# Удаляем временный файл
Remove-Item $Output -ErrorAction SilentlyContinue

Запустите скрипт вручную для теста:

powershell -file "c:\SendEmail\daily-email.ps1"

Пример результата показан на изображениях ниже.

/wordpress/wp-content/uploads/2013/11/3-cmd.jpg

/wordpress/wp-content/uploads/2013/11/4-powershellise.jpg

После отладки скрипта используйте Планировщик заданий Windows (Task Scheduler) для автоматизации. Создайте задачу: Действие -> Создать простую задачу, укажите расписание, а в действиях укажите запуск программы:

Пример параметра:

Программа/скрипт: powershell Аргументы: -file “c:\SendEmail\daily-email.ps1”

Процесс создания задачи показан далее.

/wordpress/wp-content/uploads/2013/11/8-openscheduler.jpg

/wordpress/wp-content/uploads/2013/11/9-createbasictask.jpg

/wordpress/wp-content/uploads/2013/11/10-startaprogram.jpg

/wordpress/wp-content/uploads/2013/11/11-arguments.jpg

Безопасность и конфиденциальность

Important: хранение паролей в открытом виде в скриптах и конфигурациях — риск. Рекомендуемые практики:

  • Используйте отдельный почтовый аккаунт с минимальными правами для рассылок. Это снизит ущерб в случае компрометации.
  • Для Gmail включите «Двухфакторную аутентификацию» и создайте приложение‑пароль (App Password) для рассылок, вместо основного пароля. App Password не требует хранения основного пароля.
  • Рассмотрите использование SMTP‑реле вашей организации или локального MTA (postfix/msmtp) с ограниченным доступом.
  • Ограничьте права на файлы конфигурации (chmod 640, владельцем — учетная запись с ограниченными правами или root, если это безопасно).
  • Логи и временные файлы удаляйте после отправки и по возможности шифруйте архивы с историей рассылок.

Краткая заметка по GDPR и приватности: если отчёты содержат персональные данные, согласуйте рассылку с политикой конфиденциальности и ограничьте перечень получателей.

Альтернативные подходы

  • msmtp — современная простая альтернатива ssmtp, поддерживает конфигурации per‑user и лучше вписывается в современные дистрибутивы.
  • postfix/exim — полный MTA, даёт гибкость и безопасность (сертификаты, шифрование), но требует больше настроек.
  • Использование API почтового сервиса (SendGrid, Mailgun, Amazon SES) для отправки сообщений через HTTPS вместо SMTP — безопаснее для автоматизации и не хранит пароль в открытом виде.
  • В Windows вместо SendEmail можно использовать встроенный cmdlet Send-MailMessage в PowerShell (замечание: в новых версиях он помечен как устаревший, и стоит использовать SMTP‑клиент через API или сторонние модули).

Руководство по созданию полезного отчёта: мини‑методология

  1. Определите цель: какие метрики важны — диск, память, CPU, сетевые подключения, ошибки в логах.
  2. Выберите формат: plain text для простоты или HTML/JSON для машинной обработки.
  3. Соберите команды/источники данных и протестируйте их вручную.
  4. Сформируйте временный файл, отформатируйте и проверьте читаемость на мобильных устройствах.
  5. Добавьте проверки: пороги, при превышении — отдельное тревожное письмо.
  6. Автоматизируйте запуск и настройте ретестирование и алерты при сбоях.

Чек‑лист для развертывания

Чек‑лист для Linux:

  • Установлены ssmtp/msmtp и mailutils
  • Настроен файл /etc/ssmtp/ssmtp.conf и защищён правами доступа
  • Скрипт собирает нужные данные и исполняем
  • Тестовое письмо проходит
  • Cron настроен и работает (проверить логи)
  • Проводится ротация/удаление временных файлов

Чек‑лист для Windows:

  • SendEmail или альтернативный инструмент установлен
  • PowerShell‑скрипт фиксирует нужные метрики
  • Тестовое письмо проходит
  • Задание в Планировщике создано и выполняется от корректной учётной записи
  • Файлы временных данных удаляются после отправки

Ролевые рекомендации:

  • Администратор: проверяет права доступа и наличие резервных каналов
  • DevOps: интегрирует отчёты в мониторинговую систему и добавляет условия тревог
  • Разработчик: делает формат отчёта удобным для автоматической обработки (JSON/CSV)

Критерии приёмки

  • Письмо приходит в указанный почтовый ящик в запланированное время
  • Тема и тело письма содержат ожидаемую структуру и ключевые секции
  • Временные файлы удаляются после отправки
  • Пароли и секреты защищены и не доступны лишним пользователям
  • При недоставке генерируется лог ошибки и есть механизм уведомления админа

Устранение неполадок

Если письма не доходят:

  1. Запустите скрипт вручную и убедитесь, что временный файл создан и заполнен.
  2. Попробуйте отправить тестовое письмо из командной строки (echo | mail … или sendEmail) и проверьте ошибки.
  3. Проверьте /var/log/mail.log, /var/log/syslog (Linux) или логи приложения SendEmail/Task Scheduler (Windows).
  4. Убедитесь, что фаервол/сетевые политики не блокируют исходящий порт 587.
  5. Для Gmail проверьте, разрешён ли доступ небезопасным приложениям или используются ли App Passwords.

Примеры расширений и когда это не сработает

Когда данный подход удобен:

  • Небольшие сервера и домашние лаборатории, где нужен ежедневный обзор
  • Быстрая настройка для администраторов без полноценного мониторинга

Когда лучше использовать другой подход:

  • Большие инфраструктуры и критичные к доступности сервисы — используйте специализированные системы мониторинга (Prometheus + Alertmanager, Zabbix, Datadog), чтобы не полагаться на почтовые сообщения как на источник тревог.
  • Когда требуется централизованная история и визуализация — храните метрики в временных рядах и стройте дашборды.

1‑строчный глоссарий

  • ssmtp — лёгкий SMTP‑клиент для перенаправления почты на внешний SMTP‑сервер.
  • mailutils — набор утилит для работы с почтой в Linux (включая команду mail).
  • SendEmail — простая консольная утилита для отправки почты в Windows.
  • cron — планировщик задач в Unix‑подобных системах.
  • Task Scheduler — планировщик задач в Windows.

Контрольные тесты / критерии приёмки (коротко)

  • Получил ли адресат письмо в течение 5 минут после запуска вручную?
  • Содержит ли письмо секции: диск, процессы, пользователи?
  • Удалён ли файл отчёта после рассылки?
  • Есть ли запись в системном логе о выполнении задачи?

Краткое резюме

Автоматическая отправка ежедневных отчётов по почте — недорогой и быстрый способ регулярно получать сводку по состоянию сервера. Для Ubuntu достаточно ssmtp/msmtp, mailutils и cron; для Windows — PowerShell, SendEmail и Планировщик заданий. Всегда обращайте внимание на безопасность учётных данных и масштабируйте решение при необходимости на более серьёзные системы мониторинга.

Примечание

Если вы используете другой почтовый сервис или версию ОС, большинство шагов можно адаптировать: смените SMTP‑сервер, используйте соответствующие утилиты и настройте расписание под вашу систему.

/wordpress/wp-content/uploads/2013/11/5-powershellisecommands.jpg

/wordpress/wp-content/uploads/2013/11/6-scripttest.jpg

/wordpress/wp-content/uploads/2013/11/7-email.jpg

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро