Минимальный MTA, который доставляет почту локально (для cron)?

17

На моем ноутбуке я установил cron, который выполняет еженедельную работу. Если есть что сообщить, я хотел бы получить по электронной почте для этого. Сейчас я использую KMail в качестве MUA, который может читать почту из каталога Maildir по адресу ~/.local/share/local-mail. Таким образом, я хочу, чтобы локальная почта доставлялась в эту папку (со структурой Maildir).

Я надеялся, что мертвая простая программа уже существует, у которой есть sendmailинтерфейс (такой, который echo "$REPORT" | mail -s "$SUBJECT" "$ME"может работать с ним). Установка exim или пересылка почты на мой удаленный почтовый сервер считается излишним.

Вопрос Самый простой способ пересылки всей почты с сервера? Кажется, нацелен на удаленную пересылку, которая не соответствует моим потребностям (мне нужна локальная доставка). Этот старый поток Gentoo закончился созданием старого скрипта на Perl. Конечно, должна существовать хорошо продуманная, очень простая программа?

Любые рекомендации? Я использую Arch Linux.

Lekensteyn
источник
Предполагая, что все, что MTA Arch использует по умолчанию, установлено и работает, вы можете просто использовать, userX@localhost.localdomainи все должно закончиться /var/spool/mail/userX; Вы можете проверить это самостоятельно или создать новую учетную запись, чтобы проверить с вашим MUA.
Златовласка
2
Некоторое гугление привело меня на github.com/corecode/dma aka Dragonfly Mail Agent.
tripleee
@goldilocks Arch - минимальный дистрибутив, по умолчанию MTA не установлен. /usr/bin/sendmailне существует и выход cron заканчивается в /dev/null.
Лекенштейн
@tripleee Я столкнулся с этим, но проигнорировал его, как только увидел SMTP и TLS. Спасибо за упоминание, я еще раз посмотрю. не слушает порт 25 звучит хорошо для меня.
Лекенштейн
@tripleee К сожалению, dma не поддерживает Maildir, только катушки каталогов /var/spool/mail.
Лекенштейн

Ответы:

7

Поскольку я не мог найти существующую маленькую программу, я решил написать свою собственную. Изначально я придумал:

#!/bin/bash
# Simple sendmail
# filename per spec at http://cr.yp.to/proto/maildir.html
rand=$((RANDOM % 1000))
msgname=$(date +%s).P$$R$rand.$(hostname | tr '/:' '\057\072')

# Safety measure: do not overwrite existing mail
set -o noclobber

cat > ~peter/".local/share/local-mail/inbox/new/$msgname"

Это сработало ... за исключением случаев, когда пользователь, выполняющий скрипт, не является "peter". Преемником этой идеи является «маленькая» C-программа, femtomail . Из его README:

femtomail - минимальный MDA с поддержкой Maildir

femtomail - это минимальный агент доставки почты (MDA) для локальной почты. Почта принимается со стандартного ввода и помещается в почтовый ящик пользователя. Это программное обеспечение предназначено для использования на однопользовательском компьютере.

Удаленная доставка, демонизация, проверка отправителя и т. Д. Не реализованы и не будут реализованы из-за сложности. femtomail написан не потому, что почтовое программное обеспечение не существует, а потому, что существующее программное обеспечение было слишком большим для простой задачи доставки почты cron локальному пользователю. .

Рабочий процесс femtomail:

  1. Измените пользователя процесса и группу.
  2. Создайте новый файл с уникальным именем файла в почтовом каталоге.
  3. Написать Receivedзаголовок в файл.
  4. Передать данные из стандартного ввода в файл.
  5. Выход.

Исходный код и инструкции по установке доступны по адресу https://git.lekensteyn.nl/femtomail/ .

Lekensteyn
источник
1
было бы здорово, если бы femtomail мог: прочитать user @ localhost (или имя хоста локального хоста) и установить этого пользователя, написать электронное письмо либо в домашнем каталоге, либо где-нибудь стандартным. потребуется биты setuid.
Gauteh
@gauteh Это уже более продвинутый и, вероятно, не для использования на однопользовательском компьютере. Больше возможностей означает больший код и большую вероятность ошибок. Какой у вас вариант использования?
Лекенстейн
Определенно, чтобы использовать его как полный локальный агент доставки почты, между пользователями - без жестко закодированных вещей.
Gauteh
@gauteh Я думаю, вам лучше использовать более полный MDA, такой как Dovecot, для этого варианта использования. Вы можете патчить femtomail для своего варианта использования и, возможно, даже отправить PR, если другие заинтересуются.
Лекенштейн