UnixスクリプトからDovecotメールボックスに電子メールを送信する簡単な方法は何ですか?

UnixスクリプトからDovecotメールボックスに電子メールを送信する簡単な方法は何ですか?

Linux(Debian 10)システムでは、さまざまなスクリプトを使って自分自身に電子メールを送信しようとしています。私の考えは、MTA設定の複雑さを避けるために、PostfixなどのMTAの代わりにDovecotをインストールすることでした。私が望むのは、スクリプトから奇妙なEメールを削除してから、Thunderbirdを使用してマイメールサーバーに接続し、そのEメールを抽出することです。

しかし、私は自分の電子メールサーバーを操作し、そのサーバーからスクリプトを送信する方法は/usr/sbin/sendmail

たとえば、ローカルユーザーメールボックスから電子メールを検索できるようにDovecotを正常に設定したとします。 POP3、Unixスクリプトからこれらのローカルメールボックスに電子メールを送信する最も簡単な方法(デフォルトでは最小構成)は何ですか?完全なMTAや理想的には他のものをインストールするのを避けたいです。私は次のようなものが欲しい:

/usr/sbin/sendmail "[email protected]" <<EOF_emailContent
(email here)
EOF_emailContent

答え1

基本的な問題は、MTA がないと、これらのメールボックスに電子メール アドレスがないことです。それらはディスク上のファイルにすぎません。 Dovecotはメールアドレスを知る必要はありません。

MTA(postfixなど)とDovecotの間の一般的な配置は、MTAとDovecotの両方が同じレイアウトを期待するように構成されていることです。メールボックスファイルまたはメールディレクトリ目次。しかし、MTAとDovecotのマッピングは非常に異なります。

  • Dovecotは次のことを理解しています。ユーザー読み書きするメールボックス
  • MTAは何を知っていますか?メールアドレスルーティングされるメールボックスです。

に送信された電子メールが[email protected]ユーザーに送信されると仮定できます。これは、MTAがボブのメールボックスへのbobパスを知っているために発生します。その後、IMAPまたはPOP3を介してログインすると、DovecotはbobのEメールアドレスが何であるかを知ることができます。[email protected]/home/bob/.mailbob/home/bob/.mail

...しかし、MTAは電子メールを[email protected]Bobのメールボックスにルーティングすることもできます。[email protected]Bob/home/mary/.mailが会社を辞め、彼の後任者が彼の電子メールを受け取った瞬間が来るかもしれません。それは完全にMTAが決定することです。

したがって、MTA がないとメールを受信トレイにルーティングすることはできません。


より簡単なMTAもあります。 Postfixは設定するのが非常に難しく、誤ってMTAを誤って設定し、スパマーによって乱用される危険を冒したくない人はいません。

U&Lに関するもう一つの同様の質問に注目します(重複ではありませんか?)。 メールをローカルに転送するための最小MTA(cron用)?


自分でやりたいのなら、maildirとmboxのフォーマットはとても簡単です。 maildirを使用する方がはるかに安全です。 maildirに転送するのは、tmpディレクトリに書き込んでからnewディレクトリに移動(名前を変更)するのと同じくらい簡単です。

もちろん、これらの電子メールは適切なヘッダーを含むフォーマットされている必要がありますFrom: To: Subject: Date:。例は で確認できます。RFC 5322

答え2

Dovecotには特別なローカル配信エージェントが付属しているため、dovecot-ldaMTA(sendmailやpostfixなど)なしでスクリプトからローカルDovecotメールボックスに直接メールを送信できます。

/usr/local/libexec/dovecot-lda -d user_name <<EOF_emailContent
(email here)
EOF_emailContent

user_nameハトの設定方法に応じて、システムユーザーまたは仮想ユーザーのどちらかが有効なハトのユーザーです。man dovecot-ldaより多くの選択のために。

PS実行ファイルの場所はdovecot-lda異なる場合があります。私のFreeBSDコンピュータでは/usr/local/libexec/dovecot/dovecot-lda

PS2。 Dovecotは、ローカルメール転送プロトコル(LMTP)Unixソケットも提供しています。したがって、スクリプトがSMTP経由で電子メールを送信するように設計されている場合(つまり、スクリプトでSMTP通信を実装した場合)、その通信をローカルTCPポート25からdovecotローカルunixドメインソケットにリダイレクトすることで楽しむ/var/run/dovecot/lmtpことができます。

関連情報