配送エラーのメールデータを任意の場所に退避させ、回復後に手動で再送するのは可能か new!

配送エラーとなったメールを削除せず任意の場所へ退避し、エラー要因の回復後に手動で再送する運用が可能かというご質問をいただきましたので、その考え方と注意点を説明します。

メールは、初回の配送に失敗した時点ですぐに最終的な配送エラーとなるわけではありません。EPSTDSサービスの[配送詳細]ボタンをクリックして表示される「配送詳細(SMTP)」ダイアログボックスの設定内容に従い、必要な回数または期間にわたって配送リトライが行われます。規定のリトライ回数または期間が経過し、配送を断念する時点を外部の監視プログラムだけで正確に判定することは困難です。

配送リトライ待機中のデータは、[メール作業用フォルダ](既定値 C:\mail\)内のリトライ関係フォルダに一時保存されます。
domainsフォルダ:配送リトライを行うメールアドレス、エンベロープ情報、接続結果などのデータ
holdingフォルダ:配送リトライを行うメール本体データ
退避する場合は、domainsフォルダとholdingフォルダに保存されている対応データを組として取り扱う必要があります。いずれか一方のみを移動または削除すると、リトライデータの不整合や孤児化を招く可能性があります。

【動作中のリトライ関係フォルダを外部ツールで操作しないでください】
E-Post SMTP Server (x64) および E-Post Mail Server (x64) の配送処理が動作している状態で、別のプログラムからdomains/holdingフォルダ内のデータを非同期に取得、移動、削除することは推奨できません。EPSTDSによる一連の配送処理を阻害したり、同じファイルを同時に操作したりする可能性があります。

どうしても外部ツールで退避処理を行う場合は、次の手順を検討してください。
  1. EPSTDS(SMTP配送サービス)を停止します。
  2. domainsフォルダとholdingフォルダから、対象メールに対応するデータを確認します。
  3. 対応するデータを組として、任意の退避先フォルダへ移動します。
  4. 残されたリトライデータに不整合がないことを確認します。
  5. EPSTDSサービスを再開します。
※外部ツールによる退避処理、および退避後の手動再送を含む動作は、製品の標準機能として保証されるものではありません。処理内容と影響を十分に検証したうえで、お客様の責任において実施してください。

※最終的な配送失敗時には、通常、送信元へ返すエラーメールが生成されます。エラーメール自体も配送できず、どこにも返送できなかった場合は、deadフォルダへ保存されることがあります。リトライ待機中の元メールを退避する運用と、最終配送失敗後に生成されるエラーメールを扱う運用は区別してください。

(関連FAQ)
●リトライ処理が行われるときの情報とフォルダについて
●リトライ回数やリトライ期間の設定について
●holding/domainsのリトライ関係フォルダに残ったデータは削除してよい?
●リトライデータの孤児化防止とリトライデータを退避させるときのベストな手順について