Минималистичная почтовая система
Задача: на некоторых хостах нужна отправка почты, но самый минимум.
Например, если там в раз сутки отправляется 2 письма (отчёты logwatch, tiger) и ещё сколько-то с cron'а - особого смысла держать там MTA - нет. Для таких случаев я использую связку esmtp+procmail.
Плюсы: в процессах не висит ничего лишнего. Безобразно просто в настройке. Не требует обслуживания. Минусы: нет retry ни в каком виде. Если в момент отправки недоступен smarthost - почта пропадёт.
Вот такой минимальный конфиг будет складывать локальную почту в системные mailbox'ы, а остальное - слать через smarthost. А на smarthost'е оно уже разруливается как надо.
/etc/esmtprc
:
hostname=mail.home.lan:25
mda="/usr/bin/procmail -d %T"
И, чтоб два раза не вставать: если хост работает долго, в ящике могут накапливаться тонны писем.
Вот такой скриптик разгребает ящик раз в месяц и скидывает в архив всё, что не относится к текущему месяцу.
#!/bin/sh
set -e
MBOX="/var/spool/mail/$USER"
ARCH="$HOME/mail-archive"
# чёрная магия. определение предыдущего месяца
NAME=$(date --date="$(date +%Y-%m-15) -1 month" +%Y-%m)
DATE=$(date +%Y-%m-01)
mkdir -p "$ARCH"
if [ -f "$ARCH/$NAME.archive.gz" ]; then
echo "archive for prev month already exists, abort"
exit 1
fi
# http://adc-archmbox.sourceforge.net
archmbox --archive --date "$DATE" --archive-path "$ARCH" --archive-name "$NAME" --extension archive --compress --totals "$MBOX"
exit 0
Положить куда-нибудь в /usr/local
, дать права и засунуть вызов в cron на первое число каждого месяца. В результате в почту будет прилетать вот такой отчётик:
Mailbox '/var/spool/mail/alex': 238 messages (7.66 MB)
Archived: 238 messages (7.66 MB)
Archive mailbox: /home/alex/mail-archive/2015-11.archive
Overall summary
==================================================
Parsed mailboxes: 1
Skipped mailboxes: 0
Mailboxes in use: 0
Invalid mailboxes: 0
Non existent mailboxes: 0
Empty mailboxes: 0
Parsed messages: 238
Total used space (MB): 7.66
Archived messages: 238
Total saved space (MB): 7.66
==================================================