システムユーザー以外でのみ sendmail を使用する

システムユーザー以外でのみ sendmail を使用する

システムユーザーなしで sendmail を使用する必要があります。

私の構成にまだ存在する唯一の問題は、FEATURE(virtusertable)次のように virtusertable の RHS に最終的なシステム ユーザーが必要なことです。

@domain.tld           [email protected]
[email protected]       systemuser

問題は、そのようなシステムユーザーが存在せず、@domain.tld 宛てのすべてのメールを、ユーザーとして完全な電子メール アドレスを処理できる lda (procmail、次に dovecot-lda) に配信したいということです。

私はすでに次のようなことを試しました

define(`_VIRTUSER_STOP_ONE_LEVEL_RECURSION_', `true')dnl
define(`_NEED_MACRO_MAP_',`1')dnl

しかし、これも役に立ちません。

virtusertable を読み取る procmail スクリプトによる醜い回避策はすでにありますが、これを sendmail で処理して、LDA に RHS やユーザーが含まれない送信メールが返送されるようにしたいです。さらに、sendmail で直接 lda を使用する dovecot-lda も、私たちのセットアップではオプションではありません。:(

どのような助けでも歓迎します!

答え1

を見てみましょうセンドメール FAQ 3.29- 「仮想ドメイン内の複数のユーザーが 1 つのメールボックスにアクセスする場合、実際の受信者を指定するヘッダーを追加するにはどうすればよいですか?」

私の意見では、これは必要なフックをすべて提供するので、簡単に適応して必要なものを提供できると思います。

ちなみに、選択したメーラーに「@domain.tld」virtusertable エントリを使用できますerror。これにより、virtusertable にリストされていない仮想ユーザーへのメッセージを拒否できるようになります。

@domain.tld           error:nouser No such user here
[email protected]       systemuser+%1
[email protected]        systemuser+%1

ご相談も承りますhttps://www.sendmail.com/sm/open_source/tips/virtual_hosting/

答え2

私は最終的に次の 2 つの方法でこの問題を解決しました。

a) パッチを適用しlibsm/mbdb.csendmail/recipient.cdovecot ユーザー テーブルへの追加の参照を行います。これを機能させるには、LOCAL_RULE_0 を使用した小さな調整が必要でした。

b) Andrzej は、stackoverflow の同様の質問で、mailertable と access ファイルを使用した解決策を教えてくれました。このアイデアに従って、必要なものをすべて揃えるさらに簡単な解決策を見つけました。

virtuserテーブル:

@domain.tld              user_domain_tld
[email protected]          user_another_tld

エイリアス:

user_domain_tld: "|/bin/procmail -a [email protected]"
user_another_tld: "|/bin/procmail -a [email protected]"

解決策 a) は、virtusertable で受け入れられる構文を変更し、時間の経過とともに 1 つのファイルのみをチェックするだけで済むため便利です。解決策 b) は、簡単に実現でき、さらに sendmail の将来のリリースとの互換性も高いため、優れています。すべての作業の後で、私は解決策 a) を使用していますが、クリスマス後には解決策 b) に変更する予定です ;)

関連情報