- 1.sendmailのinstall
- 22/Oct/1998での最新版である8.9.1aを用意.
・ftp://ftp.kyoto.wide.ad.jp/sendmail/sendmail.8.9.1.tar.gz
・ftp://ftp.kyoto.wide.ad.jp/sendmail/sendmail.8.9.1a.patch
・ftp://ftp.kyoto.wide.ad.jp/sendmail/sendmail.8.9.1a.unofficial.patch
あたりを用意して,適当にinstallする.NEWDBかNDBMをlinkすること.
- 2.sendmail.cfの雛形を作成
sendmail付属のcfを使用して,virtualdomain.cfを作成する.
> cd SENDMAILDIR/cf/cf
virtualdomain.mcを以下の内容で作成.
divert(-1)dnl
#
# This file contains definitions for mailserver.sample.com(virtualdomain)
#
divert(0)dnl
VERSIONID(`@(#)virtualdomain.mc 1.0 (sample.com) 22/Oct/98')
OSTYPE(solaris2)dnl
DOMAIN(sample.com)dnl
FEATURE(virtusertable, `hash /etc/mail/virtusertable')dnl
MAILER(local)dnl
MAILER(smtp)dnl
また,../domain/sample.com.m4を以下の内容で作成.
divert(-1)dnl
#
# This file contains the global definitions for yourdomain.com
#
divert(0)dnl
VERSIONID(`@(#)sample.com.m4 1.0 (sample.com) 22/Oct/98')
FEATURE(use_cw_file)dnl
virtualdomain.cfを生成.
> m4 ../m4/cf.m4 virtualdomain.mc > virtualdomain.cf
- 3.smtpcheckを追加
CFを使用して,sendmail.cfの転送制限部分を作成する.
CFDIR/Standards/smtpcheck-v8.defを使用し,適当な制限を掛ける.
CF_TYPEにはcheckを指定する.
> make smtpcheck-v8.cf
- 4.sendmail.cfの完成
2と3で用意した各fileからsendmail.cfを生成する.
cat SENDMAILDIR/cf/cf/virtualdomain.cf CFDIR/smtpcheck-v8.cf > sendmail.cf
cp sendmail.cf /etc/mail/sendmail.cf
- 5.配送テーブルの作成
メールアドレスとアカウントの関連付けを指定するテーブルを/etc/mail/virtusertableとして作成する.
root@sample.com root
webmaster@sample.com webmaster
info@sample.com webmaster
root@anonymous.net hiroyuki
webmaster@anonymous.net admin@any.domain
admin@anonymous.net admin
@mail.sample.com error : 550 User unknown
@sample.com error : 550 User unknown
@mail.anonymous.net error : 550 User unknown
@anonymous.net error : 550 User unknown
左辺に使用するメールアドレス,右辺に /etc/passwd 内のアカウント名あるいは転送先のメールアドレスを書く.ありえないアドレスはuser unknownではじくようにする.
/etc/mail/sendmail.cwに,管理するdomain名を書く.
sample.com
anonymous.net
/etc/mail/mailertableに配送先host名を書く.すべてlocalで管理するのであれば下記のようになる.ならない場合は知らない.
sample.com local
anonymous.net local
/etc/mail/generictableなんてfileもあるらしいが,無くても動いたのでpass.
- 6.配送テーブルをdb化する
以下の内容でreloadと言うshell scriptを作成.ユーザの変更があった時に実行する.sendmail.cwが変更された場合はsendmailを再起動する必要がある.
#!/bin/sh
makemap hash /etc/mail/mailertable < /etc/mail/mailertable
makemap hash /etc/mail/domaintable < /etc/mail/domaintable
makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable
最後にsendmailにHUPを送れば完成.
- (2/Dec/1998追記)
7.複数のアカウントに配/転送したい場合
virtusertableには一つのアカウントないしメールアドレスしか記述できない.また,aliasesには他ホストとlocalの組み合わせが書けない.rulesetを書き換えれば不可能ではないだろうが,現状では無理.
-
参考
- sendmail.orgのVirtual Hostingの所
- すでに動いてるvirtualhostのイメージ