メールサーバーの設定 (sendmail 8.12.3編)

最近はスパムメールが横行する時代になったため、最近リリースされたFreeBSDでは始めから中継などを行わないような設定になっています。ここでは、かなり面倒な sendmail 8.12.3 の設定を出来るだけ簡単に説明します。(と言うより私も良くわかっていない)
sendmail.cf を作成する
前の項目でも書きましたが、cfファイルなどはm4(マイクロプロセッサ)を使用します。現在配布されているFreeBSDでは標準でインストールされますので、そのまま cf ファイルを出力することができます。
元となるファイルは /usr/share/sendmail/cf/cf にありますので、これを元に修正を加えます。私の環境では以下のような修正を行いました。
# cd /usr/share/sendmail/cf/cf
# cp generic-bsd4.4.mc sendmail.mc
# vi sendmail.mc
divert(0)dnl
VERSIONID(`$Id$')
OSTYPE(`bsd4.4')dnl
DOMAIN(`generic')dnl
FEATURE(`access_db', `hash -T -o /etc/mail/access')dnl
FEATURE(`virtusertable', `hash -o /etc/mail/virtualusertable')dnl
FEATURE(`masquerade_envelope')dnl
FEATURE(`local_lmtp')dnl
define(`confTO_IDENT', `0s')dnl
define(`confCW_FILE', `-o /etc/mail/local-host-names')dnl
define(`confNO_RCPT_ACTION', `add-to-undisclosed')dnl
define(`LOCAL_MAILER_FLAGS', LOCAL_MAILER_FLAGS`'P)dnl
define(`confMAX_MIME_HEADER_LENGTH', `256/128')dnl
define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy')dnl
define(`confDOMAIN_NAME',`DomainName')dnl
MAILER(`local')dnl
MAILER(`smtp')dnl
# make sendmail.cf
submit.cf を作成する
divert(-1)
divert(0)dnl
VERSIONID(`$Id: submit.mc,v 8.6 2002/03/26 03:30:58 ca Exp $')
define(`confCF_VERSION', `Submit')dnl
define(`__OSTYPE__',`')dnl dirty hack to keep proto.m4 from complaining
define(`_USE_DECNET_SYNTAX_', `1')dnl support DECnet
define(`confTIME_ZONE', `USE_TZ')dnl
define(`confRUN_AS_USER', `smmsp')dnl <・・・ 追加
FEATURE(`msp')dnl
# make submit.cf
設定ファイルをコピーする
上記で作成した設定ファイルを /etc/mail にコピーします。
# cp sendmail.cf /etc/mail/
# cp submit.cf /etc/mail/
ホストが受け付けるドメイン名を指定する
新しい sendmail ではスパムメールへの対応が強化されているので、上記の設定ファイルを作っただけでは配送ができません。最初にこのホストが受け付けるドメイン名を指定します。
# cd /etc/mail
# vi local-host-names
受け付けるドメイン名を1行ずつ記載していきます。
host1.jp
host2.jp
host3.jp
リレーを受け付けるアドレスを指定する
メールサーバーを利用するクライアントPCのアドレスを記載します。例えば 192.168.0.n のネットワークにクライアントPCが存在している場合には次のような設定になります。
localhost  RELAY
192.168.0  RELAY
修正が終わったらテーブルの更新を行います。
makemap hash /etc/mail/access.db < /etc/mail/access
sendmailを起動する
sendmail 8.12.3 では、ネットワーク・デーモンとローカル・デーモンと機能ごとに分けられています。この2本を起動します。
/usr/sbin/sendmail -L sm-mta -bd -q15m
/usr/sbin/sendmail -L sm-msp-queue -Ac -q15m

以上で終了です。
色々調べながら作業しましたが、よくわからないところだらけです(^^;)。でもとりあえず動いているようです。。