sendmailのmaillogの ctladdr 。
「ctladdr」とは、メール配信をコントロールしているメールアドレスとUID/GIDを記述します。
Web上のメールフォームからメールを送ったりすると、ctladdrはApacheになったりします。その場合はメール送信に利用するコマンド「sendmail」にオプション「-f 送信元にしたいメールアドレス」を追加すれば解決できます。ってこれは蛇足です。
この「ctladdr」がどのように設定されているかを確認していたところ、まず分かったのはenvelop-fromアドレスがctladdrとして利用されることです。Fromに指定したものが「ctladdr」に表示され、そしてそのメールアドレスのローカル部分(ここ@domain.com)と同じIDでユーザが存在する場合は、該当ユーザのUIDとGIDも記述するようです。
さて、私が「ctladdrのログが無い」のを経験したSendmail環境にはvirtusertableを利用する設定が組み込まれておりました。
このvirtusertableの設定状況によって、ctladdrの表示が変わったり、ctladdrの記録すらなくなったりしました。原因はvirtusertableに有りましたので、以下
・ctladdrを確認できたvirtusertableの設定 と
・ctladdrを確認できなかったvirtusertableの設定 を書いておきます。
VirtuserTableの記述その1:メールアドレスの@前と配信先が同じ場合
使用したFrom:「user@hostname.domain.com 」
結果: ctladdr=<user@hostname.domain.com> (userのUID/userのGID)
VirtuserTableの記述その2:メールアドレスの@前と配信先が異なる場合
使用したFrom:「user100@hostname.domain.com」
結果: ctladdr=<user100@hostname.domain.com> (user2のUID/user2のGID)
VirtuserTableの記述その3:メールアドレスの@前を指定せずCatchAll設定の場合
使用したFrom:「tetetetekitou@hostname.domain.com」
結果: ctladdr=<tetetetekitou@hostname.domain.com>(adminのUID/adminのGID)
VirtuserTableの記述その4:配信先が外部メールアドレスの場合
使用したFrom:「user4@hostname.domain.com」
結果: なし
VirtuserTableの記述その5:配信先がエイリアスを向いている
使用したFrom:「user5@hotname.domain.com」
結果: なし
なので、ctladdrの表示がおかしい場合は、/etc/mail/virtusertableも疑ってみましょうね。
以上
コメント