| Dell Optiplex GXa | Solaris 8 x86 2/02 |
|
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宛の
メールが受信できるかどうかをテストする。