メールサーバーの設定


参考文献:FreeBSDパーフェクトネットワーク(毎日コミュニケーションズ)
メールサーバーのsendmailは、最初から組み込まれていると思いますが、ちゃんと設定をしてやらないと使用できませんので、設定することにします。

メールサーバーの方針 CFのインストール
sendmailの設定はsendmail.cfのファイルを編集するわけですが、sendmail.cfは複雑で難解なので、一般的にはCFを使用して編集します。
CFは以下のインターネット上のFTPサイトから入手します。

ftp://ftp.kyoto.wide.ad.jp/mail/CF/CF-3.7Wpl2.tar.gz

ついでに、パッチも入手しておきましょう。
ftp://ftp.kyoto.wide.ad.jp/mail/CF/CF-3.7Wpl2-smtpcheck.patch1
ftp://ftp.kyoto.wide.ad.jp/mail/CF/CF-3.7Wpl2-smtpcheck.patch2

以上のファイルを取ってきたら、フロッピーディスクにコピーして、サーバーの/tmpディレクトリ等にコピーしておいてください。
取ってきた3種類のファイルが/tmpディレクトリにあるものとして、以下のようにしてインストールします。

hoge# cd /usr/local/etc/
hoge# tar zxf /tmp/CF-3.7Wpl2.tar.gz
hoge# cd CF-3.7Wpl2/Master/
hoge# patch < /tmp/CF-3.7Wpl2-smtpcheck.patch1 
hoge# patch < /tmp/CF-3.7Wpl2-smtpcheck.patch2 

sendmail.cfの作成
CFをインストールしますと、/usr/local/etc/CF-3.7Wpl2/にsendmail.defというファイルが出来るので、このファイルを編集して作成します。

以下sendmail.defの内容。
#	sendmail 8.9を使用する。
CF_TYPE=R8V8
#	FreeBSDはOS_TYPEをbsd4.4にする。
OS_TYPE=bsd4.4
#	自ホストのドメイン(設定しなくても可)
MY_DOMAIN=foo.jp

#	FromアドレスにはMY_DOMAINを使用する。
FROM_ADDRESS='$m'
#	MY_DOMAIN宛のメールを受け取る。
ACCEPT_ADDRS='$m'

#	当該ドメイン宛のメールはすべて自分宛のメールとして処理する。
ACCEPT_LOWER=yes
#	宛先アドレスや差出人アドレスがuserのみでドメイン部分が無いときの処理
RECIPIENT_GENERIC=yes
ALWAYS_APPEND_DOMAIN=yes

#	外部宛のメールはブロバイダーのメールサーバーへrelayする
DIRECT_DELIVER_DOMAINS=none
DEFAULT_RELAY='smtp:[mail.brobaider.jp]'

#	外部宛のメールはMessage-IDを付けずに、ブロバイダーのメールサーバーで付与する。
SMTP_MAILER_FLAG_SUB=M
ESMTP_MAILER_FLAG_SUB=M

#	メールリレーの設定。/etc/sendmail.localipで設定したアドレスだけリレーする。
MAIL_RELAY_RESTRICTION=yes
#	ローカル(192.168.0.?)からの使用はOK
LOCAL_HOST_IPADDR='192.168.0'

sendmail.defを編集したら、次にコンパイルします。

hoge# cd /usr/local/etc/CF-3.7Wpl2/
hoge# make sendmail.cf

そして、コンパイルして出来たsendmail.cfを、インストール(コピー)します。

install -c -m 644 -o root -g wheel sendmail.cf /etc/sendmail.cf
以上でメールサーバーの設定は終わりです。

では、再起動してみましょう。

hoge# killall -HUP sendmail
 

DNSの正引きファイルでMXレコードが設定されていれば、正常に動作すると思います。

qpopperの使用
sendmailでは、smtpでメールの送信ができますが、受け取ることが出来ませんので、メールを受け取るためのPOPサーバーのqpopperをインストールします。
qpopperは、packageのFTPサイト等から探してきて、pkg_addコマンド等でインストールしてください。

initd.confの設定
     # example entry for the optional pop3 server
     #
     # pop3    stream  tcp     nowait  root    /usr/local/libexec/popper       popper

上記のように書いてある行を探してください。

     # example entry for the optional pop3 server
     #
     pop3    stream  tcp     nowait  root    /usr/local/libexec/popper       popper

#を取って、読み込まれるようにします。

また、、/etc/services ファイルに以下の行が含まれているか、確認をします。無かったら付け足してください。
     pop3            110/tcp    #Post Office Protocol - Version 3
     pop3            110/udp    #Post Office Protocol - Version 3
 

クライアント側のメーラーの設定例
メールアドレスは、一般ユーザー@hoge.foo.jpです。パスワードはサーバーにログインする時のパスワードです。

smtpの設定例
SENDMAIL1.GIF - 4,714BYTES

popの設定例
SENDMAIL2.GIF - 4,324BYTES

Relaying Denied IP name lookup failedについて
クライアントからこのサーバーに設置したSMTP(Sendmail)を使用して、外部宛てにメールを出そうとすると、Sendmailの支離滅裂なセキュリティが働いて、IP name lookup failedというエラーを出し、ブロバーダーのメールサーバーにメールをリレーしてくれません。 これは、Sendmailがクライアントのマシンのホスト名を、ネームサーバーから検索して、見つけようとしても見つからないので、敏感すぎるセキュリティが働いてしまってしまっているためです。
IP name lookup failedのエラーを無くすためには、ネームサーバーに、クライアントのホスト名を与えてやることによって回避できます。
例えば、ネームサーバーが参照するfoo.zoneに以下のように記述することによって、ネームサーバーがネームの解決を解決出来るようになります。
実際のクライアントのホスト名とは食い違いが発生しますが、メールの送受信程度の事では特に問題が発生しないと思います。
dhcp2	IN	A	2
dhcp3	IN	A	3
dhcp4	IN	A	4
		.
		.
		.
 

同様に、逆引きのファイルにも修正をしておきます。
2	IN	PTR	dhcp2.foo.jp.
3	IN	PTR	dhcp3.foo.jp.
4	IN	PTR	dhcp4.foo.jp.
			.
			.
			.
 

これでIP name lookup failedのエラーは無くなりますが、Sendmailで実際にメールの送受信が出来るかどうかは、早々とpostfixに乗り換えてしまったので、検証していません。(^^;;
Sendmailは非常に複雑な設計なので、別なセキュリティが働いてしまうような気がしますが・・・。
postfixでは、こういう面倒なことをやらなくても、簡単にメールを送信してくれます。

※上記の事をやらなくても、Sendmailがインストールされているサーバー上で、メールを作成して、外部宛てに送信することはできます。問題になるのはクライアントからメールを送信しようとする時のみです。
もっとも、メールを外部宛てに送信する時に、ブロバイダーで用意されているSMTPを使用すれば、全く問題になりません。


BACK