sendmailのアドレス解釈をテストする




sendmailをインストールした時や設定を変更した時にsendmailが思うように動作するかテストする必要がある。
そして、テストの1つとしてアドレスの解釈のテストが考えられる。
これは配送要求のあった宛先アドレスをどのように解釈してどのサーバに送ろうとしているかを見る。
コマンドは次の通り(黄色部分を入力)
# /usr/lib/sendmail -bt -c /etc/mail/sendmail.cf
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> /parse aaaa@bbbb.cccc.dd
Cracked address = $g
Parsing envelope recipient address
canonify           input: aaaa @ bbbb . cccc . dd
Canonify2          input: aaaa < @ bbbb . cccc . dd >
Canonify2        returns: aaaa < @ bbbb . cccc . dd . >
canonify         returns: aaaa < @ bbbb . cccc . dd . >
parse              input: aaaa < @ bbbb . cccc . dd . >
Parse0             input: aaaa < @ bbbb . cccc . dd . >
Parse0           returns: aaaa < @ bbbb . cccc . dd . >
ParseLocal         input: aaaa < @ bbbb . cccc . dd . >
ParseLocal       returns: aaaa < @ bbbb . cccc . dd . >
Parse1             input: aaaa < @ bbbb . cccc . dd . >
Parse1           returns: $# local $: aaaa
parse            returns: $# local $: aaaa
2                  input: aaaa
2                returns: aaaa
EnvToL             input: aaaa
EnvToL           returns: aaaa
final              input: aaaa
final            returns: aaaa
mailer local, user aaaa
「mailer local」となっていることから、このアドレスは転送せずにローカルで受け取るものだと解釈していることが分かる。

別のアドレスで実行した場合は次の通り
# # /usr/lib/sendmail -bt -c /etc/mail/sendmail.cf
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> # /parse test@eeee.ffff.gg
Cracked address = $g
Parsing envelope recipient address
canonify           input: test @ eeee . ffff . gg
Canonify2          input: test < @ eeee . ffff . gg >
Canonify2        returns: test < @ eeee . ffff . gg . >
canonify         returns: test < @ eeee . ffff . gg . >
parse              input: test < @ eeee . ffff . gg . >
Parse0             input: test < @ eeee . ffff . gg . >
Parse0           returns: test < @ eeee . ffff . gg . >
ParseLocal         input: test < @ eeee . ffff . gg . >
ParseLocal       returns: test < @ eeee . ffff . gg . >
Parse1             input: test < @ eeee . ffff . gg . >
Mailertable        input: < eeee . ffff . gg > test < @ eeee . ffff . gg . >
Mailertable        input: eeee . < ffff . gg > test < @ eeee . ffff . gg . >
Mailertable        input: eeee . ffff . < gg > test < @ eeee . ffff . gg . >
Mailertable      returns: test < @ eeee . ffff . gg . >
Mailertable      returns: test < @ eeee . ffff . gg . >
Mailertable      returns: test < @ eeee . ffff . gg . >
MailerToTriple     input: < > test < @ eeee . ffff . gg . >
MailerToTriple   returns: test < @ eeee . ffff . gg . >
Parse1           returns: $# esmtp $@ eeee . ffff . gg . $: test < @ eeee . ffff . gg . >
parse            returns: $# esmtp $@ eeee . ffff . gg . $: test < @ eeee . ffff . gg . >
2                  input: test < @ eeee . ffff . gg . >
2                returns: test < @ eeee . ffff . gg . >
EnvToSMTP          input: test < @ eeee . ffff . gg . >
PseudoToReal       input: test < @ eeee . ffff . gg . >
PseudoToReal     returns: test < @ eeee . ffff . gg . >
MasqSMTP           input: test < @ eeee . ffff . gg . >
MasqSMTP         returns: test < @ eeee . ffff . gg . >
EnvToSMTP        returns: test < @ eeee . ffff . gg . >
final              input: test < @ eeee . ffff . gg . >
final            returns: test @ eeee . ffff . gg
mailer esmtp, host eeee.ffff.gg., user test@eeee.ffff.gg
「mailer esmtp」となっており、「host eeee.ffff.gg」となっていることから
このアドレスはホスト「eeee.ffff.gg」に転送するものだと解釈していることが分かる

ちなみに、終了は「Ctrl」+「D」