最小的MTA在本地传送邮件(对于cron)?


17

在笔记本电脑上,我设置了一个执行每周工作的cron。如果有什么要报告的,我想收到一封电子邮件。现在,我将KMail用作MUA,它能够从的Maildir目录中读取邮件~/.local/share/local-mail。因此,我希望将本地邮件传递到该文件夹​​(具有Maildir结构)。

我希望已经存在一个带有sendmail接口(echo "$REPORT" | mail -s "$SUBJECT" "$ME"可以使用它)的简单程序。安装exim或将邮件转发到我的远程邮件服务器被认为是多余的。

问题从服务器转发所有邮件的最简单方法?似乎是针对不适合我需求的远程转发(我需要本地递送)。这个旧的Gentoo线程最终导致在Perl中编写一个旧脚本。当然必须存在一个经过深思熟虑,简陋的程序吗?

有什么建议吗?我正在使用Arch Linux。


假设默认情况下已安装并正在运行MTA Arch所使用的任何东西,那么您就可以使用它,userX@localhost.localdomain而这些东西最终应该放在/var/spool/mail/userX; 您可以自己检查,也可以创建一个新帐户来与MUA核对。
goldilocks 2013年

2
一些谷歌搜索将我带到github.com/corecode/dma aka Dragonfly Mail Agent。
2013年

@goldilocks作为最小发行版的Arch默认情况下未安装MTA。/usr/bin/sendmail不存在,cron输出最终在中/dev/null
Lekensteyn

@tripleee我遇到了这个问题,但是一旦看到SMTP和TLS便忽略了它。感谢您的提及,我会再看一遍。不听端口25听起来对我有好处。
Lekensteyn

@tripleee不幸的是,dma不支持Maildir,仅支持spool dirs /var/spool/mail
Lekensteyn

Answers:


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。从其自述文件:

femtomail-具有Maildir支持的最小MDA

femtomail是用于本地邮件的最小邮件传递代理(MDA)。邮件从标准输入中接受,并放置在用户的Maildir框中。该软件旨在用于单用户计算机上。

由于其复杂性,远程交付,守护进程,发件人验证等均未实现,因此也不会实现。femtomail之所以没有编写,是因为不存在邮件软件,而是因为现有软件太大,无法完成将cron邮件传递给本地用户的简单任务。

femtomail的工作流程:

  1. 更改流程用户和组。
  2. 在邮件目录中创建一个具有唯一文件名的新文件。
  3. Received标头写入文件。
  4. 将数据从标准输入传递到文件。
  5. 出口。

可从https://git.lekensteyn.nl/femtomail/获得源代码和安装说明。


1
如果femtomail可以,那就太好了:读取user @ localhost(或本地主机的主机名)并设置该用户的身份,在主目录或标准位置写入电子邮件。需要setuid位。
gauteh,2014年

@gauteh已经更高级了,可能不适合在单用户计算机上使用。更多功能意味着更大的代码和更大的错误机会。您的用例是什么?
Lekensteyn 2014年

明确地,将其用作用户之间的完整本地邮件传递代理-无需硬编码的东西。
gauteh 2014年

@gauteh我认为您最好使用更完整的MDA(例如Dovecot)以解决该用例。不过,您可以为自己的用例打补丁femtomail,甚至可以在其他人感兴趣的情况下发送PR。
Lekensteyn 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.