Автоматическая отправка ежедневных писем со статистикой сервера
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Пример результата письма показан на изображении ниже.

Когда скрипт отработал корректно, настроим 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"Пример результата показан на изображениях ниже.


После отладки скрипта используйте Планировщик заданий Windows (Task Scheduler) для автоматизации. Создайте задачу: Действие -> Создать простую задачу, укажите расписание, а в действиях укажите запуск программы:
Пример параметра:
Программа/скрипт: powershell Аргументы: -file “c:\SendEmail\daily-email.ps1”
Процесс создания задачи показан далее.




Безопасность и конфиденциальность
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 или сторонние модули).
Руководство по созданию полезного отчёта: мини‑методология
- Определите цель: какие метрики важны — диск, память, CPU, сетевые подключения, ошибки в логах.
- Выберите формат: plain text для простоты или HTML/JSON для машинной обработки.
- Соберите команды/источники данных и протестируйте их вручную.
- Сформируйте временный файл, отформатируйте и проверьте читаемость на мобильных устройствах.
- Добавьте проверки: пороги, при превышении — отдельное тревожное письмо.
- Автоматизируйте запуск и настройте ретестирование и алерты при сбоях.
Чек‑лист для развертывания
Чек‑лист для Linux:
- Установлены ssmtp/msmtp и mailutils
- Настроен файл /etc/ssmtp/ssmtp.conf и защищён правами доступа
- Скрипт собирает нужные данные и исполняем
- Тестовое письмо проходит
- Cron настроен и работает (проверить логи)
- Проводится ротация/удаление временных файлов
Чек‑лист для Windows:
- SendEmail или альтернативный инструмент установлен
- PowerShell‑скрипт фиксирует нужные метрики
- Тестовое письмо проходит
- Задание в Планировщике создано и выполняется от корректной учётной записи
- Файлы временных данных удаляются после отправки
Ролевые рекомендации:
- Администратор: проверяет права доступа и наличие резервных каналов
- DevOps: интегрирует отчёты в мониторинговую систему и добавляет условия тревог
- Разработчик: делает формат отчёта удобным для автоматической обработки (JSON/CSV)
Критерии приёмки
- Письмо приходит в указанный почтовый ящик в запланированное время
- Тема и тело письма содержат ожидаемую структуру и ключевые секции
- Временные файлы удаляются после отправки
- Пароли и секреты защищены и не доступны лишним пользователям
- При недоставке генерируется лог ошибки и есть механизм уведомления админа
Устранение неполадок
Если письма не доходят:
- Запустите скрипт вручную и убедитесь, что временный файл создан и заполнен.
- Попробуйте отправить тестовое письмо из командной строки (echo | mail … или sendEmail) и проверьте ошибки.
- Проверьте /var/log/mail.log, /var/log/syslog (Linux) или логи приложения SendEmail/Task Scheduler (Windows).
- Убедитесь, что фаервол/сетевые политики не блокируют исходящий порт 587.
- Для 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‑сервер, используйте соответствующие утилиты и настройте расписание под вашу систему.



Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента