web-dev-qa-db-ja.com

メール本文をデータベースにログインするには、Linuxmilterソリューションが必要です

さまざまなクライアントやベンダーとメールを交換しています。担当者とクライアントまたはベンダーとの間のすべての電子メール通信がデータベースに保存されるソリューションを実装しようとしているので、管理システムに通信の記録があります。 Guru.comやelance.comのようないくつかのプロジェクトサイトで同様のシステムを見てきました。電子メールを介してやり取りしますが、システムは会話をログに記録します。

私はこれを実装する方法を見つけるために数日を探していました。 Guru.comからのメールを調べていると、それらはすべて共通のメールアドレスに送信されていることがわかります。件名には暗号化されたIDと「From :(フリーランサーの名前またはプロジェクトの所有者の名前)」が含まれているため、そのボックスには、そのメールの本文を解析してDBに保存し、メールをに転送するミルターがあるようです。受信者(件名から)。

メールにベンダーを使用していますが、独自のウェブサーバー(EC2、AWS Linux)を実行しているため、「mail2」などの2つ目のMXレコードを作成して、このアプリケーションに使用できると考えています。次に、「[email protected]」のようなものを使用して、サーバーにそれらの電子メールを処理させることができます。これはsendmailmilterで実行できると思いますが、正確にはわかりません。

これに関する支援や指示を探しても何も見つかりませんでした。検索する適切な用語がわからない場合があります。私は多くのミルターについて読んだことがありますが、これを解決しているようには見えません。誰かが助けを提供したり、私を正しい方向に向けたりできますか?

ありがとう

トム

2
Thom

典型的な流れはむしろ配達の1つです。あなたの質問にはタグが付けられています procmail なので、Procmailソリューションは受け入れられると思います。

追加のMXレコードやその他のシェナニガンは必要ありません。 Sendmail(または最新のMTA。レガシーの理由でSendmailと特に結婚していない場合はPostfixをお勧めします)は、受信メッセージに対して非常に簡単にスクリプトを実行できます。

メッセージの配信が受け入れられると、MDA(この場合はSendmail)は.forwardファイルなどのクライアントフックを探します。見つかった場合、ファイルが解析され、ファイル内のパイプラインが実行されます。これは、Procmailが通常レガシーシステムで呼び出される方法です(ただし、最近では、ユーザーの.procmailrcを読み取り、Procmailが見つかった場合はそれを呼び出すための定型レシピが標準のSendmail機能セットの一部です)。

Procmailの代わりに、独自のスクリプトを実行できます。または、.procmailrcからスクリプトを実行することもできます(これは、Procmailが多くの厄介なエラーシナリオを処理するため有益です)。

:0
| /path/to/script

これで、Procmailはメッセージを標準入力として/path/to/scriptを開き、スクリプトがメッセージの処理(配信、解析、破棄)を行うと想定します。

Procmailも:cに保存する場合は、$DEFAULTフラグを追加します。

:0c
| /path/to/script

たぶん、受信者のアドレスをパラメータとしてスクリプトに追加します。

ADDR=`formail -rtzxTo:`
:0c
| /path/to/script "$ADDR"

スクリプトは非常に単純な場合があります。データベースの詳細はあなたにお任せし、各着信メッセージをファイルに記録するための簡単なPerlスクリプトを示します。

#!/usr/bin/Perl

use strict;
use warnings;

open (DB, ">>", "/path/to/file.db") or die "Complication: $!";
print DB "Correspondent: $ARGV[1]\n";
while (<>) {
    print DB;
}
close DB;

これは受信電子メールに理想的ですが、送信通信もログに記録する簡単で簡単な方法は、送信メッセージのアカウントアドレスであるBccを使用することです。一方、対話にWebインターフェイスを使用する場合は、Webスクリプトから書き込みを行い、電子メールを生成して送信し、会話の着信部分にのみProcmail(または同様のもの)を使用できます。これは、この種のシステムから非常に自然に来るように、単に電子メールを書くことによってシステムを使用する可能性を犠牲にして、システムをいくらか単純化するでしょう。

上記のPerlスクリプトは十分に単純であり、Procmailは十分に用途が広いため、.procmailrcからこれらすべてを実行できますが、実際のデータベース処理では、いずれにしても小さな外部スクリプトが必要になります。

1
tripleee