MTA mínimo que entrega correio localmente (para cron)?

17

No meu laptop, configurei um cron que executa um trabalho semanal. Se houver algo a relatar, gostaria de receber um e-mail. No momento, estou usando o KMail como MUA, capaz de ler mensagens do diretório Maildir em ~/.local/share/local-mail. Portanto, quero que o correio local seja entregue a essa pasta (com uma estrutura Maildir).

Eu esperava que já exista um programa simples e morto que tenha uma sendmailinterface (que echo "$REPORT" | mail -s "$SUBJECT" "$ME"possa funcionar com ele). Instalar o exim ou encaminhar correio para o meu servidor de correio remoto é considerado um exagero.

A pergunta A maneira mais simples de encaminhar todos os emails do servidor? parece direcionar o encaminhamento remoto, o que não atende às minhas necessidades (preciso de entrega local). Esse antigo tópico do Gentoo acabou criando um script antigo no Perl. Certamente deve existir um programa bem pensado e simples?

Alguma recomendação? Estou usando o Arch Linux.

Lekensteyn
fonte
Presumindo que o que o MTA Arch usa por padrão está instalado e em execução, você pode simplesmente usar [email protected]e o material deve acabar /var/spool/mail/userX; você pode verificar isso sozinho ou criar uma nova conta para verificar com seu MUA.
goldilocks 07/07
2
Alguns sites me trouxeram para o github.com/corecode/dma, também conhecido como Dragonfly Mail Agent.
Tripleee 07/07
O @goldilocks Arch sendo uma distribuição mínima não tem um MTA instalado por padrão. /usr/bin/sendmailnão existe e a saída cron termina em /dev/null.
21713 Lekensteyn
@ tripleeee Eu encontrei isso, mas o ignorei quando vi o SMTP e o TLS sendo mencionados. Obrigado por mencionar, vou dar uma olhada novamente. não escuta na porta 25 parece bom para mim.
21813 Lekensteyn
@tripleee Infelizmente, o dma não suporta Maildir, apenas os diretórios de spool /var/spool/mail.
precisa saber é o seguinte

Respostas:

7

Como não consegui encontrar um programa pequeno e existente, decidi escrever meu próprio. Originalmente, eu vim com:

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

Isso funcionou ... exceto se o usuário executando o script não for "peter". O sucessor dessa idéia é um programa C "pequeno", femtomail . Do seu README:

femtomail - MDA mínimo com suporte ao Maildir

femtomail é um MDA (Mail Delivery Agent) mínimo para correio local. O email é aceito a partir da entrada padrão e colocado em uma caixa de Maildir de um usuário. Este software foi projetado para uso em uma máquina de usuário único.

Entrega remota, daemonizing, verificação por remetente etc. não são implementados e não serão implementados devido à sua complexidade. femtomail não foi gravado porque o software de correio não existia, mas porque o software existente era muito grande para a tarefa simples de entregar o cron mail ao usuário local .

O fluxo de trabalho do femtomail:

  1. Mude o usuário e o grupo do processo.
  2. Crie um novo arquivo com um nome de arquivo exclusivo no diretório de email.
  3. Escreva um Receivedcabeçalho no arquivo.
  4. Passe dados da entrada padrão para o arquivo.
  5. Saída.

O código fonte e as instruções de instalação estão disponíveis em https://git.lekensteyn.nl/femtomail/ .

Lekensteyn
fonte
11
seria ótimo se o femtomail pudesse: ler user @ localhost (ou nome do host do host local) e definir esse usuário, escrever o email no diretório home ou em algum lugar padrão. exigiria bits setuid.
gauteh
@gauteh Isso já é mais avançado e provavelmente não deve ser usado em uma máquina de usuário único. Mais recursos significam código maior e maior chance de erros. Qual é o seu caso de uso?
Lekensteyn
definitivamente, para usá-lo como um agente local completo de entrega de correio, entre usuários - sem material codificado.
gauteh
@gauteh Acho que você está melhor com um MDA mais completo, como o Dovecot, para esse caso de uso. Você pode corrigir o femtomail para o seu caso de uso e talvez até enviar um PR caso outros estejam interessados.
Lekensteyn