Sendmail で外部からのメールを受け入れ可能にする (CentOS 5.5)


Sendmail で外部からのメールを受け入れる

CentOS 5.5 では、既定では Sendmail はローカルホストからの送信専用として設定されているようです。

これを、例えばメールサーバーとして機能させるなど、外部の SMTP サーバーからの接続を行えるようにするためには、"/etc/mail/sendmail.mc" の "DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl" という設定行を次のように変更する必要があります。

DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl

このようにすることで、localhost (127.0.0.1) への接続しか受け入れなかった状況を、インターネットからの接続も許可するように制限を解くことができます。

このような設定をしたら、次のようにして設定内容を反映させます。

make sendmail.cf

make restart

もしこのとき、"WARNING: 'sendmail.mc' is modified. Please install package sendmail-cf to update your configuration." というメッセージが表示されてしまう場合には、あらかじめ "yum install sendmail-cf" などとして、"sendmail-cf" パッケージをインストールしておく必要があります。

 

このようにインターネットからの接続を許可した場合、外部から接続されて送られてきたメールを別の SMTP サーバーへリレーするかどうかといった設定にも注意を払っておく必要があります。

このリレーの可否を決めるのが "/etc/mail/access.db" で、これは "/etc/mail/access" ファイルを編集することで調整します。

この辺りのお話については EZ-NET: sendmail でメールのリレーを可能にする の方で記しているので参考にして欲しいのですが、ともあれ、予期しないリレーを避けるためにも、最初の一度は "/etc/mail/access" の内容を確認した上で、次のようにして "access.db" を更新しておくと良いと思います。

make access.db

こうすることで、例えば "/etc/mail/access" で何についても RELAY 許可が設定されていないことを確認して access.db を更新することで、この Sendmail 経由で他の SMTP サーバーへ予期しない不正中継がされることを未然に防ぐことが出来ると思います。

 

受理するドメインを設定する

Sendmail で自分のドメインのメールサーバーを運用したい場合には、"/etc/mail/local-host-names" に扱いたいドメインを登録します。

例えば "xxxx@xxxx.xxx.xx.jp" というメールを扱追うと思った場合は、次のような内容になります。

xxxx.xxx.xx.jp

このように @ よりも後ろの部分をファイル内に記載します。

複数のドメインを扱いたい場合には、それぞれのドメインを 1 行ごとに記載してあげれば大丈夫です。

 

記載が出来たら、次のようにして変更を反映します。

make sendmail.cf

make restart

これで "/etc/mail/local-host-names" に登録したドメインのメールを受け入れる準備ができました。

後は、サーバー上に登録されているアカウント名をつけた "USERNAME@xxxx.xxx.xx.jp" へ電子メールを送信すれば、そのメールが USERNAME のメールボックスへ配送される感じになります。