web-dev-qa-db-ja.com

ローカルにメールを配信する最小限のMTA(cron用)?

私のラップトップでは、毎週ジョブを実行するcronをセットアップしました。何か報告がありましたらメールでお知らせします。現在、KMailをMUAとして使用しています。これは、~/.local/share/local-mailのMaildirディレクトリからメールを読み取ることができます。したがって、ローカルメールを(Maildir構造を使用して)そのフォルダーに配信する必要があります。

私は、sendmailインターフェース(echo "$REPORT" | mail -s "$SUBJECT" "$ME"が機能するような)を持つ、非常に単純なプログラムがすでに存在することを望んでいました。 eximをインストールしたり、メールをリモートのメールサーバーに転送したりすることは、やり過ぎと見なされます。

質問 サーバーからすべてのメールを転送する最も簡単な方法は? は、自分のニーズに合わないリモート転送をターゲットにしているようです(ローカル配信が必要です)。この 古いGentooスレッド は、Perlで古いスクリプトを作成することになりました。確かに、よく考えられた、非常に単純なプログラムが存在している必要がありますか?

何かお勧めですか? Arch Linuxを使用しています。

18
Lekensteyn

既存の小さなプログラムが見つからなかったので、自分でプログラムを作成することにしました。もともと、私は思いつきました:

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

これはうまくいきました。ただし、スクリプトを実行しているユーザーが「ピーター」でない場合を除きます。このアイデアの後継は、「小さな」Cプログラム femtomail です。 READMEから:

femtomail-Maildirをサポートする最小限のMDA

femtomailは、ローカルメール用の最小限のメール配信エージェント(MDA)です。メールは標準入力から受け入れられ、ユーザーのMaildirボックスに配置されます。このソフトウェアは、シングルユーザーマシンでの使用を目的としています。

リモート配信、デーモン化、送信者検証などは実装されておらず、その複雑さのために実装されません。メールソフトウェアが存在しないため、femtomailは記述されていませんが、既存のソフトウェアが ローカルユーザーにcronメールを配信する の単純なタスクには大きすぎるためです。

フェムトメールのワークフロー:

  1. プロセスのユーザーとグループを変更します。
  2. 一意のファイル名 で新しいファイルをメールディレクトリに作成します。
  3. Receivedヘッダーをファイルに書き込みます。
  4. 標準入力からファイルにデータを渡します。
  5. 出口。

ソースコードとインストール手順は https://git.lekensteyn.nl/femtomail/ で入手できます。

7
Lekensteyn