Dell Optiplex GXa Solaris 8  x86  2/02

こちらSolaris 9編に引っ越します。今後このページの更新はありません。

POP Before SMTP with sendmail-8.12.10 + smtpfeed

戻る

1. BerkeleyDB.4.1.25のインストール
2. drac-1.12のインストール
3. qpopper4.0.5のインストール
4. smtpfeed-1.18のインストール
5. sendmail-8.12.10のインストール
6. sendmail-8.12.10の設定
6-2 (バーチャルドメインの設定)

sendmail-8.12.10の設定
sendmailをPOP Before SMTPと、stmpfeed対応で使用するための設定。

※要m4インタプリタ


ディレクトリを移動する。
	$ cd /opt/src/sendmail-8.12.10/sendmail-8.12.10/cf/cf

Solaris用の見本ファイルをコピーする。
	$ cp generic-solaris.mc sendmail.mc

コピーした見本ファイルを編集する。
	$ vi sendmail.mc

以下のように書き換えて、保存する。

==============================================================
divert(0)dnl
VERSIONID(`$Id: generic-solaris.mc,v 8.13 2001/06/27 21:46:30 gshapiro Exp $')
OSTYPE(solaris8)dnl
define(`MAIL_SETTINGS_DIR', `/etc/mail/')dnl
Dwhost
Dmdomain.com
define(`confDOMAIN_NAME', `$w.$m')dnl
FEATURE(`mailertable')dnl
define(`confMIN_QUEUE_AGE', `15m')dnl
define(`confTO_QUEUEWARN', `1h')dnl
define(`confTO_QUEUERETURN', `1d')dnl
define(`confTO_IDENT', `0s')dnl
MASQUERADE_AS(`$m')dnl
FEATURE(`masquerade_envelope')dnl
FEATURE(`drac')dnl
define(`confPRIVACY_FLAGS', `goaway,restrictmailq')dnl
define(`confSMTP_LOGIN_MSG', `$j Domain YOU/Original; $b')dnl
define(`confOPERATORS', `.:@!^/[]+')dnl
DOMAIN(generic)dnl
FEATURE(nocanonify)dnl
MAILER_DEFINITIONS
Msmtpf, P=/usr/lib/smtpfeed, F=mDFMuXz!_, S=11/31, R=21, E=\n, L=990,
        T=DNS/RFC822/SMTP, M=5000000, A=smtpfeed
MAILER(smtp)dnl
define(`SMART_HOST', `smtpf:LMTP')dnl
MAILER(local)dnl
==============================================================

上記各新規記述行の簡単な説明

OSTYPE(solaris8)dnl
	デフォルトでSolaris2用の見本ファイルなので、Solaris8に書き換える。

define(`MAIL_SETTINGS_DIR', `/etc/mail/')dnl
	コンフィグファイルなどを格納するディレクトリを/etc/mail/に指定

Dwmail
	この(自分の)メールサーバーのホスト名を「mail」(例)として指定。

Dmdomain.com
	この(自分の)ドメイン名を「domain.com」(例)として指定。

define(`confDOMAIN_NAME', `$w.$m')dnl
	この(自分の)FQDNを「mail.domain.com」(例)として指定。

FEATURE(`mailertable')
	特定のドメイン宛のメールをDNSのMXレコードから引けるサーバー宛で
	はなく、固定的に任意のメールサーバーに宛てるように振り向けること
	が出来るようにする。(通常はほとんど必要ない設定)(qmailでいうところの
	smtproutesの事)

define(`confMIN_QUEUE_AGE', `15m')dnl
	何らかの原因で受け取ったメールが送信・転送できなかった場合(相手の
	メールサーバーが止まっていたり、忙しかった場合など)、一時的に
	メールを/var/spool/mqueue/に溜めこみ、あるタイミングで再送信を試
	みる。この再送信のタイミングを指定することが出来る。設定できる時間
	単位にはm(分) h(時間) d(日) の3種類がある。この例では短めの15分に
	指定している。

	特に携帯電話にメールを送る場合に一発で送信できない事が多いようだ。
	携帯ユーザーが多すぎてdocomoやauのメールサーバーは忙しいらしい。
	最近docomoは利用料金を支払えば送信元を「支払ったサーバーに限定」
	する特別なメールサーバーのサービスを始めたらしい。つまり、一般的
	なMXレコードを引いて得られるサーバー以外に有料の受信サーバーを立
	てたって事。 これは、「業務の都合上、どうしてもすぐに携帯のメールが
	配信されないと困る」外部サーバーを運営している人に有効。例えばSPAM
	(迷惑メール)を送るのを生活の糧にしてるブラックな広告業者とかね。
	でも、そもそも携帯ユーザーに正常に(すぐに)メール送信ができない可能
	性がある(っていうか出来ないことが多い)こと自体が、受信者である携帯
	電話ユーザーに対して失礼だと思うんだが。。。

define(`confTO_QUEUEWARN', `1h')dnl
	メールが配送できなかったために、「今から何日間か配送を試みます」と
	いう旨のメールを送信者に自動通知する。この例ではキューに溜めた時点
	から1時間後に送信者に自動通知させている。

define(`confTO_QUEUERETURN', `1d')dnl
	キューに溜め込んだメールをどれ位の期間保存しておくかを指定させる。
	ここで指定した時間を過ぎると、メールは消去され、送信者にその旨
	報告するメールを送る。
	この例では1日(24時間)に指定している。

	つまり、キューに溜まったメールは上記3行の指定で、
	・15分毎に再送信を試み
	・1時間後に送信者に「相手のメールサーバーに未だ送信できない」
	 旨の報告をして
	・24時間後に再送信を諦めメールを消去の上、送信者に「送信できなかっ
	 た」と報告のメールを送ることになる。

define(`confTO_IDENT', `0s')dnl
	IDENT認証を行わない。IDENT認証はあまり効果的な認証とは思えないので、
	使用しない。 第一ルーターでポート113は閉じてあるし。
	この例でタイムアウトを0秒にすることで、応答待ち時間を省略することが
	出来る。(デフォルトでは30秒)

MASQUERADE_AS(`$m')dnl
	送信者のFrom:のドメイン名を書き換える。この例では「xxx@domain.com」
	に書き換えさせている。

FEATURE(`masquerade_envelope')dnl
	エンベロープ送信者mail from:も書き換える。この例では
	「xxx@domain.com」に書き換えさせている。

FEATURE(`drac')dnl
	POP Before SMTP(drac)を使用する。

define(`confPRIVACY_FLAGS', `goaway,restrictmailq')dnl
	SMTPは相手のサーバーにどのようなユーザーがいるかを調べ
	るVRFYコマンドや、メーリングリストにはどのようなメンバー
	がいるかを調べるEXPNコマンドがある。これらのプライバシー
	に関するコマンドを制限するため「goaway」を指定する。
	また、一般ユーザーにmailqコマンドを実行させないために
	restrictmailqを指定する。

define(`confSMTP_LOGIN_MSG', `$j Domain YOU/Original; $b')dnl
	SMTPでメールサーバーにアクセスすると、サーバーが使用して
	いるメールデーモンの名前とバージョン名が表示される。
	もしも自分が使用しているsendmailにセキュリティホールが
	見つかってしまっていた場合、クラッカーはこの情報を元に
	攻撃を仕掛けてくる可能性がある。この例のように表示させ
	る内容を変えることによって、使用しているバージョンを秘
	匿することが出来る。

define(`confOPERATORS', `.:@!^/[]+')dnl
	この例のように、使用できる特殊記号の中に「%」を記述しない
	ことでソースルーティングを禁止することができる。

FEATURE(nocanonify)dnl
MAILER_DEFINITIONS
Msmtpf, P=/usr/lib/smtpfeed, F=mDFMuXz!_, S=11/31, R=21, E=\n, L=990,
        T=DNS/RFC822/SMTP, M=5000000, A=smtpfeed
	smtpfeedを有効にする。
==============================================================

cfファイルを作成する。
	$ make sendmail.cf


セキュリティを高めるため、このサーバーを経由して配信されたメール
のヘッダ部分に表示されるバージョン番号(8.12.10/8.12.10)を変える。
もしも自分が使っているバージョンにセキュリティホールが見つかってし
まった場合、クラッカーはその情報を元に攻撃を仕掛けてくる可能性があ
るので、出来上がったsendmai.cfを少々書き換えて表示させるバージョン
を架空のものにしてしまう。
(コンパイル前のversion.cの書き換えも忘れずに)

出来上ったsendmail.cfをviで開く。
	$ vi sendmail.cf

DZ8.12.10と書かれた部分を検索(163行目あたり)して以下のように適当に
書き換えて保存する。

	##### 変更前 #####
	# Configuration version number
	DZ8.12.10

	##### 変更後例 #####
	# Configuration version number
	DZ2008


SuperUserになって、作成したcfファイルをコピーする。
	$ su
	password:
	# cp ./sendmail.cf /etc/mail/

受信すべき自分のドメイン名を設定する。
	# vi /etc/mail/local-host-names

自ドメイン名を入力して保存する。
	domain.com


#####↓↓↓↓↓ (通常はほとんど必要ない設定) ↓↓↓↓↓#####

特定のドメイン宛のメールをDNSのMXレコードから得られるサーバーアドレスへではなく、
任意のメールサーバーに固定的に配送するように設定する。(qmailでいうところのsmtproutesの事)
新規ファイルmailertable.txtをviで作成する。
	# vi mailertable.txt

例えば以下のような記述をして保存する。
	domain.ne.jp          smtp:[192.168.0.100]

作成したmailertable.txtを元にDBファイルを作成する。
	# makemap hash mailertable.db < mailertable.txt

#####↑↑↑↑↑ (通常はほとんど必要ない設定) ↑↑↑↑↑#####



sendmailデーモンを再起動させる。
	# /etc/init.d/sendmail stop
	# /etc/init.d/sendmail start


他の端末からPOPを引く前に送信が拒否され、POPを引いた後は許可されるかどうかを
テストする。(この時、宛先は他のドメイン宛(他のメールサーバー宛)にしないと、
テストの意味がないので注意)

他のメールサーバー(プロバイダとか勤務先とか)から自ホストのMailAddress宛の
メールが受信できるかどうかをテストする。