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


17

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

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

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

推奨事項はありますか?Arch Linuxを使用しています。


デフォルトでMTA Archが使用しているものがインストールされて実行されていると仮定するuserX@localhost.localdomainと、そのまま使用でき/var/spool/mail/userXます。これを自分で確認するか、MUAで確認する新しいアカウントを作成できます。
goldilocks

2
いくつかのグーグルでgithub.com/corecode/dma別名Dragonfly Mail Agentに移動しました。
トリプリー

最小のディストリビューションである@goldilocks Archには、デフォルトでMTAはインストールされていません。/usr/bin/sendmailは存在せず、cron出力はになり/dev/nullます。
Lekensteyn

@tripleeeそれに遭遇しましたが、SMTPとTLSが言及されているのを見て、それを無視しました。言及してくれてありがとう、もう一度見てみよう。ポート25でリッスンしないのはいいですね。
Lekensteyn

@tripleee残念ながら、dmaはMaildirをサポートせず、でのみスプールを変更し/var/spool/mailます。
-Lekensteyn

回答:


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"

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

femtomail-Maildirサポートを備えた最小限のMDA

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

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

femtomailのワークフロー:

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

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


1
femtomailが可能であれば素晴らしいと思います:user @ localhost(またはローカルホストのホスト名)を読み取り、そのユーザーをsetuidし、ホームディレクトリまたは標準のどこかにメールを書き込みます。setuidビットが必要です。
gauteh 14年

@gautehこれはすでに高度であり、おそらくシングルユーザーマシンでは使用できません。機能が増えると、コードが大きくなり、バグが発生する可能性が高くなります。あなたのユースケースは何ですか?
Lekensteyn

明確に、ハードコーディングされたものなしで、ユーザー間で完全なローカルメール配信エージェントとして使用します。
gauteh 14年

@gautehそのユースケースでは、Dovecotなどのより完全なMDAを使用した方が良いと思います。ただし、使用事例に応じてfemtomailにパッチを適用することは自由です。他の人が興味を持っている場合に備えてPRを送信することもできます。
レーケンシュタイン14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.