アドオンは Pro版のみの機能です
アドオンは、PMail Server の SMTP 又は MTA がメール処理(SMTPの場合は受信、MTA の場合は配信)後に外部プログラム、又は特殊コマンドを実行する機能です。
このアドオンから実行されるプログラムをアドオンプログラムと呼びます。
以下の用語はそれぞれ下記の意味を持ちます。
ドメインフォルダ
インストールフォルダ直下にある spool フォルダ内に管理ドメイン名と同じ名前をフォルダを指します。
仮想ユーザー
ドメイン内に存在しないエイリアスを持つメールアドレスを指します。
アドオンプログラムは、Windows で実行できるプログラムで、実行後に必ず自動で終了するプログラムであれば、下記を除くどのようなプログラムも利用可能です。(例:受信したメールに対して Perl を起動し、メールを加工した後に処理を続行など)
SMTP はマルチスレッドで稼働する為、アドオンプログラムは同時起動が保証されているアプリケーションを指定してください。同時起動ができないアプリケーションについては動作保証はありません。
addon.txt
アカウントに対応するメールボックス内に設置し、メールボックスに配信されたメールのみが対象となります。
user_addon.txt
ドメインフォルダ内に設置し、そのドメインに存在するアドレス向けに配信されたメールが対象となります。
nouser_addon.txt
ドメインフォルダ内に設置し、そのドメインに存在しないアドレス(仮想ユーザー)向けに配信されたメールが対象となります。
error_addon.txt
ドメインフォルダ内に設置し、そのドメインから配信を行った際に PMail Server が作成するエラーメールと同内容のメールが対象となります。
(このアドオンはローカルユーザー、仮想ユーザー問わずで実行されます)
mtaaddon.txt
スプールフォルダ内に設置し、MTA が処理を行うメールが対象となります。
特定のアカウントでのみアドオンプログラムを実行するには、アカウントのメールボックス内に「addon.txt」を作成します。
addon.txt の中は以下のように記述を行います。
<実行するプログラムへのフルパス> <オプション>記述例
cmd /c copy "%m" "c:\temp\%f"
(*1) メールアドレスは SMTPプロトコル中で指定されるメールアドレス(MAIL FROM: / RCPT TO:)となります。ヘッダ内のアドレス(From: / To:)ではありません。
全てのアドオンプログラムの実行が終了された時点で、メールが存在していた場合は、PMail Server がメールを受信(POP)できるように自動的に uidl.txt の更新を行います。
アドオンによりファイルが削除された場合は uidl.txt の更新は行われません。
アドオンの実行に失敗した場合は、失敗以降の処理は実行されません。
「サーバ管理」「SMTP用」「動作設定」内にある「非ローカルアドレス受信」で指定されたアカウントに addon.txt が設置されている場合 対象となる addon.txt は実行されます。
特定のドメインに所属する全てのアカウントで共通のアドオンプログラムを実行するには、ドメインフォルダ内に「user_addon.txt」を作成します。
user_addon.txt の中は以下のように記述を行います。
OMITALIASSTART
アドオン実行から除外するメールアドレスのエイリアス部分(ワイルドカードと完全一致修飾の [ ] 利用可能)
OMITALIASEND
<実行するプログラムへのフルパス> <オプション>
(以下、複数行記述可)
除外するエイリアス部分が無い場合でも OMITALIASSTART と OMITALIASEND は記述する必要があります。
記述例
OMITALIASSTART
webmaster
OMITALIASEND
cmd /c copy "%m" "c:\temp\%f"
(エイリアス webmaster を除いてアドオンを実行)
(*1) メールアドレスは SMTPプロトコル中で指定されるメールアドレス(MAIL FROM: / RCPT TO:)となります。ヘッダ内のアドレス(From: / To:)ではありません。
除外するエイリアス部分にはワイルドカードを利用することができます。完全一致(ただし大文字小文字は問わず)させる場合は [一致させるエイリアス] のように [ ] で囲います。
全てのアドオンプログラムの実行が終了された時点で、メールが存在していた場合は、PMail Server がメールを受信(POP)できるように自動的に uidl.txt の更新を行います。
アドオンの実行に失敗した場合は、失敗以降の処理は実行されません。
「サーバ管理」「SMTP用」「動作設定」内にある「非ローカルアドレス受信」で指定されたアカウントが user_addon.txt が設置されたドメインに所属する場合 対象となる addon.txt は実行されます。
仮想ユーザーでアドオンプログラムを実行するには、ドメインフォルダ内に「nouser_addon.txt」を作成します。
nouser_addon.txt の中は以下のように記述を行います。
ADDONALIAS=<メールアドレス(ワイルドカードと完全一致修飾の [ ] が利用可能)>記述例
ADDONALIAS=A*@example.jp
cmd /c copy "%m" "d:\pt1\%f"
ADDONALIASEND
メールアドレスのエイリアス行頭に a が付く場合に実行
ADDONALIAS=B*@example.jp
cmd /c copy "%m" "d:\pt2\%f"
ADDONALIASEND
メールアドレスのエイリアス行頭に b が付く場合に実行
ADDONALIAS=C????@example.jp
cmd /c copy "%m" "d:\pt3\%f"
ADDONALIASEND
メールアドレスのエイリアス行頭に c が付き全部で5文字だった場合に実行
ADDONALIAS=[xyz@example.jp]
cmd /c copy "%m" "d:\pt4\%f"
ADDONALIASEND
メールアドレスが xyz@example.jp に完全(ただし大文字小文字は問わず)に一致する場合に実行
ADDONALIAS=Default
cmd /c copy "%m" "d:\%f"
ADDONALIASEND
上記のいずれにも該当しない場合に実行
仮想ユーザーはメールボックスを持たない為、処理されたメールは自動的に削除されます。
アドオンの実行に失敗した場合は、失敗以降の行は実行されません。
「サーバ管理」「SMTP用」「動作設定」内にある「非ローカルアドレス受信」で指定されたアカウントが nouser_addon.txt が設置されたドメインに所属する場合 対象となる nouser_addon.txt が優先して実行され、非ローカルアドレス受信には配信されません。
MTA でメールを配信し、以下の条件に当てはまる場合に実行されます。
エラーメールに対してアドオンプログラムを実行するには、ドメインフォルダ内に「error_addon.txt」を作成します。
ローカル外受信を含めメールボックスに配信されるエラーメールそのものをアドオンで加工することはできません。
主にエラーが発生した場合に、ヘッダ中から配信先やエラー内容を確認する為の機能です。(PMCによる同報送信で宛先が無いエラーが発生した場合リストから除外する等の処理をアドオンプラグラムを作成することで可能になります)
error_addon.txt の中は以下のように記述を行います。
DELETEERRORMAIL
<実行するプログラムへのフルパス> <オプション>
(以下、複数記述可)
送信者が存在する user@example.com だった場合
a)アドオン用のファイルが生成されます。
b)aで作成されたファイルにアドオンを実行します。
c)アドオン終了後に、ユーザーのメールボックス内にエラーメールが生成されます。
送信者が存在しない virtual@example.com だった場合
a)アドオン用のファイルが生成されます。
b)aで作成されたファイルにアドオンを実行します。
c)アドオン終了後に、エラーメール受信用の管理者アドレスが指定されている場合は同アドレスのメールボックスにエラーメールが生成され、指定されていない場合はそのまま破棄が行われます。(外部へのエラーメール配信は行わない為)
基本的な動作としては「エラーメールが発生」→「メールボックスへ生成又は破棄」の間に、割り込むような形で実行されます。
実行の際にローカルユーザー宛なのか仮想ユーザー宛なのかの判断は行われませんので、この点についてはアドオン側で判断をお願い致します。
アドオンの実行に失敗した場合は、失敗以降の行は実行されません。
MTA でメールを処理(配信)するメールすべてに対して実行されます。
処理が行われるタイミングが PMail Server2 の MTA が Spool フォルダを確認し、配信処理を実行する直前に行われます。
アドオンの中で該当メールが削除された場合は、配信は行われません。
mtaaddon.txt の中は以下のように記述を行います。
<実行するプログラムへのフルパス> <オプション>
(以下、複数記述可)
addon.txt と user_addon.txt は重複して実行されます。
MTATRANSFER= で転送されたメールには、ヘッダ中に「X-MailTransfer:PMail Server Addon」が自動で挿入されます。
ヘッダ中に「X-MailTransfer:PMail Server Addon」が存在する場合は MTATRANSFER= は実行されません。
全てのプログラムの実行が「正常終了」した時点で、user_addon.txt の場合は、そのまま処理が続行されます。(メールボックスへの配信等)
nouser_addon.txt の場合は仮想ユーザーの為、そこで処理は終了します。
また、アドオンを実行する際は宛先が複数指定されている場合でも毎回「オリジナルのメール」が処理対象となります。その為、To:user@example.com CC:user2@example.com と宛先が指定されている場合に、user@example.com で処理をしたメールが user2@example.com へ渡されることはありません。
アドオンを実行した際にドメインフォルダに保存されるメールは自動で削除されます。アドオンの中で削除処理を行った場合は処理はそこで終了します。
ドメイン単位でのアドオン実行は、user_addon.txt / nouser_addon.txt / error_addon.txt の有無でのみ判断されます。
nouser_addon.txt の中身が無い場合(0byte)であっても、ファイルがドメインフォルダの存在する場合は、仮想ユーザー処理が有効となります。
仮想ユーザー処理をしない場合は、ファイルをリネームする。削除する等を必ず行って下さい。
仮想ユーザーが有効になっている場合、そのドメイン宛のメールは全て受け付けるようになります(理論上、宛先の指定でエラーになることはありません)
また配信先が仮想ユーザーの場合は、PMail Server からの応答が「Recipient ok」から「Recipient ok(Virtual)」)に切り替わります
その為、送信者が宛先を設定ミスしていた場合も送信者はそれを知ることはできませんので、注意してください。
ただし、仮想ユーザーはメールボックスを持たないアドレスとなりますので、アドオンプログラムで処理をしない限り受信後削除され、配信等は行われません。
MTATRANSFER=<転送先サーバ(ホスト名又はIP)>,<転送先のポート番号>,<転送先アドレス(*1)>,<SMTP認証に使うアカウント名(*2)>
<> は必要ありません。区切りはカンマです
(*1) 転送先アドレスに * を指定した場合は、宛先のアドレスの変更は行われません。
user@example.com から unknwon@example.jp(仮想ユーザー)の場合
転送先アドレス | 送信者 | 宛先 |
* | user@example.com | unknwon@example.jp |
trans@example.jp | user@example.com | trans@example.jp |
(*2) SMTP認証の設定は、pmman.exe の「サーバ管理」「転送」「転送用認証」の設定と共通になります。
このオプションを省略した場合はSMTP認証は行われません。またアカウント名に「Default」を指定した場合は「共通アカウント」が利用されます。
copy などの内部コマンドを利用する場合は行頭に cmd /c を追加します。
cmd /c copy %m d:\%f
とした場合は、まず対象のメールファイルがOSのコピーコマンドにより d:\ にコピーされます。
これは、copy 等のコマンドは command.com や cmd.exe の内部コマンドである為です。
%m のパスに全角やスペースなどが含まれる場合は、%m を "%m" のように "で囲う必要がある場合があります。
cmd /c copy "%m" "d:\%f"
これは、多くのコマンドラインソフトや内部コマンドでスペースがオプションのセパレータ(区切り)として認識される為です。