MTA minimal qui remet le courrier localement (pour cron)?

17

Sur mon ordinateur portable, j'ai installé un cron qui effectue un travail hebdomadaire. S'il y a quelque chose à signaler, j'aimerais recevoir un e-mail pour cela. En ce moment j'utilise KMail comme MUA qui est capable de lire le courrier du répertoire Maildir à ~/.local/share/local-mail. Ainsi, je souhaite que le courrier local soit remis dans ce dossier (avec une structure Maildir).

J'espérais qu'il existe déjà un programme simple et mort qui a une sendmailinterface (telle qu'elle echo "$REPORT" | mail -s "$SUBJECT" "$ME"peut fonctionner avec elle). L'installation d'exim ou le transfert de courrier vers mon serveur de messagerie distant est considéré comme excessif.

La question La manière la plus simple de transférer tous les messages du serveur? semble cibler le transfert à distance qui ne correspond pas à mes besoins (j'ai besoin d'une livraison locale). Ce vieux thread Gentoo a fini par créer un ancien script en Perl. Il doit sûrement exister un programme bien pensé et d'une simplicité déconcertante?

Des recommandations? J'utilise Arch Linux.

Lekensteyn
la source
En supposant que tout ce que MTA Arch utilise par défaut est installé et en cours d'exécution, vous pouvez simplement l'utiliser [email protected]et les choses devraient se retrouver /var/spool/mail/userX; vous pouvez le vérifier vous-même ou créer un nouveau compte pour vérifier avec votre MUA.
goldilocks
2
Une recherche sur Google m'a amené à github.com/corecode/dma alias Dragonfly Mail Agent.
tripleee
@goldilocks Arch étant une distribution minimale, aucun MTA n'est installé par défaut. /usr/bin/sendmailn'existe pas et la sortie cron se retrouve dans /dev/null.
Lekensteyn
@tripleee J'ai rencontré cela mais je l'ai ignoré une fois que j'ai vu SMTP et TLS mentionnés. Merci d'avoir mentionné, je reverrai. n'écoute pas sur le port 25 sonne bien pour moi.
Lekensteyn
@tripleee Malheureusement, dma ne prend pas en charge Maildir, uniquement les répertoires de spool dans /var/spool/mail.
Lekensteyn

Réponses:

7

Comme je ne pouvais pas trouver un petit programme existant, j'ai décidé d'écrire le mien. À l'origine, j'ai trouvé:

#!/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"

Cela a fonctionné ... sauf si l'utilisateur exécutant le script n'est pas "peter". Le successeur de cette idée est un "petit" programme C, femtomail . De son README:

femtomail - MDA minimal avec prise en charge de Maildir

femtomail est un agent de distribution de courrier (MDA) minimal pour le courrier local. Le courrier est accepté à partir de l'entrée standard et placé dans la boîte Maildir d'un utilisateur. Ce logiciel est destiné à être utilisé sur une machine mono-utilisateur.

La livraison à distance, la démonétisation, la vérification de l'expéditeur, etc. ne sont pas implémentées et ne le seront pas en raison de sa complexité. femtomail n'est pas écrit parce que le logiciel de messagerie n'existait pas, mais parce que le logiciel existant était trop volumineux pour la simple tâche de livraison de courrier cron à l'utilisateur local .

Le flux de travail de femtomail:

  1. Modifiez l'utilisateur et le groupe de processus.
  2. Créez un nouveau fichier avec un nom de fichier unique dans le répertoire de messagerie.
  3. Écrivez un en- Receivedtête dans le fichier.
  4. Transmettez les données de l'entrée standard au fichier.
  5. Sortie.

Le code source et les instructions d'installation sont disponibles sur https://git.lekensteyn.nl/femtomail/ .

Lekensteyn
la source
1
ce serait génial si femtomail pouvait: lire user @ localhost (ou le nom d'hôte de l'hôte local) et définir cet utilisateur, écrire l'e-mail dans le répertoire personnel ou quelque part standard. nécessiterait des bits setuid.
gauteh
@gauteh C'est déjà plus avancé et probablement pas pour une utilisation sur une machine mono-utilisateur. Plus de fonctionnalités signifie un code plus grand et une plus grande chance de bugs. Quel est votre cas d'utilisation?
Lekensteyn
définitivement, pour l'utiliser comme un agent de distribution de courrier local complet, entre les utilisateurs - sans trucs codés en dur.
gauteh
@gauteh Je pense que vous êtes mieux avec un MDA plus complet tel que Dovecot pour ce cas d'utilisation. Vous êtes cependant libre de patcher femtomail pour votre cas d'utilisation, et peut-être même d'envoyer un PR au cas où d'autres seraient intéressés.
Lekensteyn