sendmailのIPv6設定

IPv6化は,完了していませんでした.

実は,IMAPのIPv6化を追求していたときに既に気がついていました.sendmailが,プロバイダーのメールサーバーにメールを送るときは,IPv6のアドレスで送るのですが,受け取るときは,いつもIPv4なのです.たまたまなのかと思っていましたが,LAN内のテストでも,IPv6で接続できないことが解りました.

で,まずは,何も考えずにネット検索です. “sendmail IPv6″で検索すると,sendmail.mcに,

DAEMON_OPTIONS(`Name=IPv4, Family=inet, Port=smtp')dnl
DAEMON_OPTIONS(`Name=IPv6, Family=inet6, Port=smtp')dnl

の2行を追加して,sendmail.cfを作成せよ,という回答が多数を占めます.で,何も考えずにやってみますが,

daemon IPv4: problem creating SMTP socket

というエラーが出てしまいます.

さらに何も考えずに検索で見つかったことを片っ端から試しましたが,上記のエラーが出ます.

そこで,自分の頭で考えてみることにしました.そもそも,STARTTLSに対応させるために,私のsendmail.mcには,

DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl

というDAEMON_OPTIONSがあります.これが前述の追記したDAEMON_OPTIONSとコンフリクトするのでしょう.ということで,両者を合体させた,

DAEMON_OPTIONS(`Port=smtp, Name=MTA, Family=inet6')dnl
DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s, Family=inet6')dnl

というのに書き換えてみて,makeしたら,うまく動くようになりました(つまりDAEMON_OPTIONSはこの2行のみにした).

IPv4の記述(inet)はありませんが,なくても動くだろうという読みは当たりました(つまりデフォルトでサポートされているというか,IPv6に内包されている).

しかし,IPv6を使おうって意識の高い人たちが,STARTTLSを使ってない(使っていれば上記問題に遭遇するはず)ってのは理解不能です.

これも,解ってしまえばこれだけの話なんです.これだけのことで半日つぶしましたとさ.めでたしめでたし^^;

関連記事