Sendmailの設定方法

目次

商用UNIXでは未だにデフォルトメールサーバーとして活躍しています。機能、設定方法を含めもう一度Sendmailを見直してくことにしましょう。使い方によってはまだまだ現役です。

Sendmailについて
Qpopperの構成
CFの使い方
defファイルの作成
Sendmailの簡単な運用

Sendmailの基本環境
戻る

Sendmailの利用前に
Sendmailは各Linuxディストリビューション、商用UNIXやFreeBSDのデフォルトメールサーバーに採用されており、デフォルト環境で既にSendmail(sendmail)がインストールされています。新たなバージョンを使用したい場合は再度インストール作業を行って下さい。SolarisのSendmailはNIS+対応にカスタマイズしたものであり、若干、他のOSに付属するsendmailとは異なる点があります。カスタマイズされたSolarisのSendmailに関してはSun Microsystemsがパッチを公開しており、パッチ適用の作業を行っておれば別途アップデート作業は不要と思われます。

Qpopperの構成

Sendmailはpopサーバーの機能はありません。Sendmailでメールの受信を行いたい場合はQpopperをインストールする必要があります。インストール方法はメインページのインストールログを参照して下さい。インストールが済めばinetdからQpopperを起動させるために/etc/inetd.confを次の様に修正します。

pop3 stream tcp nowait root /usr/local/sbin/popper popper -s

Solaris10の場合はSMFに対応させるために次のコマンドを実行します。

# inetconv

一度、testuser(ローカルユーザ)にメールを送り、ポート110にtelnetしてみて動作を確認してみます。

$ echo "this is a test mail" | /usr/ucb/Mail -s testsubject testuser
$ telnet localhost 110

USER testuser
PASS test
LIST
RETR 1

[メール内容が表示されます]

QUIT

CFの使い方

Sendmailの設定は/etc/mail/sendmail.cfファイルの修正で行います。しかし、このファイルはかなり複雑に記述されており、直接手を加えることは避けたいものです。一般 にもこのファイルを直接編集する機会はないでしょう。このsendmail.cfの編集にはCFというツールがあるからです。ここ最近ではSendmailの設定はCFを扱うことを意味します。

CFのインストールと使い方>
CFプログラムは実はスクリプトなのです。コンパイルする必要はありません。perlとシェルスクリプトから構成されており、単体で動作します。インストール後、CFの設定はdefという拡張子のファイルで行います。defファイルの文法は簡単で、基本的に
変数名='値'
となります。シェルスクリプトが解析するので=の両サイドにスペースをいれてはいけません。テンプレートはStandard/Sendmail-v8.defにあります。 defファイルが作成できれば、そのdefファイルからsendmail.cfを作成します。作成は

make [defファイル名]

と実行するだけです。

注意>
CFのバージョンはSendmailのバージョンに深く関係しています。Sendmailのバージョンアップを行ったあとCFが対応しない場合がありますのでくれぐれも注意してください。

defファイルの作成

sendmail-v8.defのテンプレートを参考にdefファイルを作成してください。

CF_TYPE=R8V8
OS_TYPE='Solaris_8'

FORM_ADDRESS='$m'
LOCAL_USERS='bin sys adm lp smtp uucp listen nobody ftp http'

RECIPIENT_GENERIC=yes
REWRITE_GENERIC_FROM=lower
REWRITE_GENERIC_TO=yes

ACCEPT_ADDRS='$m'
ACCEPT_LOWER=yes

DIRECT_DELIVER_DOMAINS='$m'
DIRECT_RELAY='smtp:mail01.syns.net'

LOCAL_HOST_IPADDR='127.0.0.1 192.168.0.2'
CLIENT_HOST_DOMAIN='$m'
CLIENT_FROM_DOMAIN='$m'

COPY_ERRORS_TO='postmaster'

OS_TYPE
OSを指定するのですが、Solaris8,9のオプションはないので2.5を指定しました。(問題はありません)

FORM_ADDRESS
@の後ろの文字列を指定します。$mはドメイン名を示すマクロ変数です。

REWRITE_GENERIC_FROM
ユーザーが別のアドレスをFromアドレスに指定しても、強制的にFromアドレスを書き換えることが可能です。

LOCAL_USERS
rootなど全てのホスト上に存在するユーザーが送信したメールはホスト情報がなくなってしまうと何処から送信されたメールかわからなくなります。そのためホスト名が入ったroot@[ホスト名].syns.net等 のアドレスにかえた方が良いでしょう。その機能を利用するユーザー名を値とします

REWRITE_GENERIC_TO
一般のローカルユーザーが同じホスト上のユーザーにメールを送るとき、ホスト情報を抜いて送信できるようにする場合は値をyesにします。

ACCEPT_ADDRS
@[ホスト名].syns.net宛てのアドレスだけではなく@syns.net宛てのアドレスに対するメールも受理することを意味します。

ACCEPT_LOWER
[ホスト名].syns.netの様にホスト名がドメイン名の前に付くアドレスに対するメールも受理することを意味します。

DIRECT_RELAY
Solarisのmailhostと同じ様に、全ての送信メールを受け持つsmtpサーバーを指定する場合に指定します。

DIRECT_DELIVER_DOMAINS
DIRECT_RELAYを指定した場合でも、自分宛てのドメイン名が含まれるメールは自身のサーバーで直接送信することができます。

LOCAL_HOST_IPADDR
自身のサーバーから送信するメールに関しては全て受理します。(
127.0.0.1 192.168.0.2)

CLIENT_HOST_DOMAIN
送信元ホストを限定することができます。ここでは自身のドメインに属するホストのみ送信を受理することを意味しています。

CLIENT_HOST_ADDR
上記の例では記述していませんが、 CLIENT_HOST_DOMAINをIPアドレスで指定することがでる変数名です。

CLIENT_FROM_DOMAIN
qmailのRCPTを同じで、外部からリレーされたメールが受理される送信先ドメインを指定します。ここでは自身のドメインが含まれるメールのみしか受理しないことを意味しています。

COPY_ERRORS_TO
メールサーバーのエラーを報告するユーザーを指定します。

Sendmailの簡単な運用

defファイルからcfファイルの作成は先程紹介しました。cfに変換されたカスタマイズファイルはなんでもかまいません。変換後に/etc/mail/sendmail.cfに置き換えてください。BSDの場合は/etc/sendmail.cfです。sendmail.cfファイルを移しおわるとSendmailを再起動すれば完了です。

/etc/init.d/sendmail stop
/etc/init.d/sendmail start

<その他の設定ファイル>
/etc/aliases
メールアドレスのエイリアスを設定します。/etc/aliasesを更新した場合はその後、変更を有効にするためにnewaliasesコマンドを実行してください。

.forward
メールの転送を行う場合には各ユーザーのホームディレクトリに.forwardファイルを作成し、転送先アドレスを記述してください。

Sendmail基本環境

Sendmailはmbox形式ですので、メールはファイル形式で保存されます。メールを確認する場合はmailコマンドを実行してください。一覧する場合はmailxコマンドを実行してください。キューを確認する場合はmailqコマンドを実行してください。基本的な設定は以下にまとめました。

受信メールの確認 /bin/mail
受信メールの一覧 /bin/mailx
メールの送信操作 /usr/lib/sendmail
ログファイルの場所 /var/log/syslog
送信未完メールキューの保存場所 /var/spool/mqueue/
キューの内容確認 /usr/lib/sendmail -bp ; mailq
送信未完メールの再処理 /usr/lib/sendmail -q
aliasファイルの場所 /etc/aliases
aliasファイルの更新操作 /usr/lib/sendmail -bi ; newaliases

 


<関連書籍の購入>
sendmailクックブック―設定と運用のためのレシピ集

sendmail 第3版〈VOLUME1〉運用編
sendmail 第3版〈VOLUME2〉設定編

<戻る>