main

Минималистичная почтовая система

Задача: на некоторых хостах нужна отправка почты, но самый минимум.

Например, если там в раз сутки отправляется 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 на первое число каждого месяца.