目的:普通電話回線を使った一般的なPPP着信サーバでメールだけを取り次ぎする。
簡単な接続経路概要
遠隔パソコン-NTT-(COM1)PPP着信サーバ&DNS(ipマスカレードeth1)-(ipマスカレードeth1)メールサーバ(eth0)-WAN
メールサーバとPPP着信サーバのあるLANグループはそれぞれ独立している。
ちょっと特殊な使い方でおもしろかったので紹介します、
バタバタで睡眠不足の中、記述しているので文章がメタメタを了承願う。
パソコン
EPSON.HFC8
M/B:ASUS.CUSL2-M
CPU:P3.900MHz
RAM:SDRAM.128Mbyte
eth0:3COM.3C920.(オンボード.3C905C-TX)
eth1:3COM.3C905B-J-TX
GRPH:Intel82815(オンボード)
HDD:IDE20G
モデム
OMRON.ME5614B
CD-ROM起動で(Enter).GUIインストール
標準インストール
日本語106/109キーボード
3ボタンマウス
自動パーティション
ブートローダ詳細設定
ブートラベルdosをwinにした。
eth0
DHCPを使用しない。
IP:192.168.0.1
ネットマスク:255.255.255.0
ネットワーク:192.168.0.0
ブロードキャスト:192.168.0.255
eth1
DHCPを使用しない。
IP:192.168.1.128
ネットマスク:255.255.255.0
ネットワーク:192.168.1.0
ブロードキャスト:192.168.1.255
ホスト名:host01.kaisya.co.jp
ゲート:192.168.1.123(メールサーバ)
DNS:192.168.0.1(DNSサーバでない)
タイムゾーン
Asia/Tokyo
ユーザも1人入れる。
rootパスワードを適当に入れる。
すべてを(1180MB)インストール
モニタ設定、Intel815,65536Color,1024x768
自動パーティション
(hda1.WindowsMe.2GB)
hda2./boot.70MB
(hda3.拡張領域)
hda5./.17210MB
hda6.スワップ.133MB
(TurboLinuxS6.1では手動で
hda1.WindowsMe.2GB
hda2.スワップ.100MB
hda3./.100MB(54MB使用)
hda4.拡張領域
hda5./var.400MB(42MB使用)
hda6./home.400MB(10MB使用)
hda7./usr.6GB(1GB使用)
のこりは未使用障害対策用で使っていたので、
自動の割り振りは意外だった。
というか気に入らない!)
インストールをする。
予めperlが扱えるようにする。
perlはPPPサーバで必要でないけど
ま・どうせ使うことになるので設定しておく。
# vi .bash_profile
ENV=$HOME/,bashrc行の直上行に下記を追加行
PATH=$PATH:/root
rootで再ログインしたときに有効になる。
テストのため telnet を使えるようにする。
テスト後は使わないようにコメントにする。
# vi /etc/inetd.conf
#telnet stream tcp nowait root
/usr/sbin/tcpd in.telnetd in.telnetd -hのコメントを外し、
telnet stream tcp nowait
root /usr/sbin/tcpd in.telnetd in.telnetd -hとして、
# vi /etc/hosts.allow
際下行に下記1行を追加、自分のIPアドレスグループからの接続だけ認める。
in.telnetd : 192.168.1.0/255.255.255.0 : allow
# cat /etc/hosts.deny
denyの確認をする。
ALL:ALL
/etc/rc.d/init.d/inet restart
上記で再起動、この段階でtelnetdは使える。
BIOSでシリアルポートのアドレス、割り込みを確認、
AwardBIOS Setup Utility
Advanced
I/O Device Configuration
Onbord Serial Port 1 [3F8H/IRQ4]
テストを円滑に行うためroot権限で作業をする。
rootでログイン、/rootでテストを作業を行う。
起動時/dev/ttySxハードウエアが認識されているか確認。
mail にログがある。
ttyS00 at 0x03f8 (irq = 4) is a 16550A
(ここでは16550A、UARTに該当チップIC名がない場合、LINUXでそのポートを使うには絶望的労力が必要)
考察なぜttyS0でなくttyS00なのだろう。
seyonで使いたくてリンクしたが、seyonチェックしないなら後でリンクするのでここでリンクしなくても良い。
/dev/modemを使うように心がければモデムは/dev/ttyS0に接続したが/dev/ttyS1とかに用意に変更できる。
# ln -s /dev/ttyS0 /dev/modem
seyonが無いのでインストールする。
TurboLinuxServerJ6.1ではパッケージにあったが 6.5 で無くなった。
TurboLinuxServerJ6.1コムパックエディションCDを挿入
GNOME.rkvtにて、turbopkg
メンテナンス、インストール/アップデート、CD-ROM、F4、seyon、space、続行、終了
# find / -name sey*
/usr/X11R6/bin/seyon
/usr/X11R6/bin/seyon-emu
/usr/X11R6/lib/X11/seyon.help
/usr/X11R6/man/man1/seyon.1x
/usr/share/doc/packages/seyon-2.14c
以上がインストール
TurboLinuxServerJ6.1マシンには、/usr/share/doc/JF/seyon-mini-HOWTO.txt.gzもあった。
まず機械的に正常に機能するか確かめる。
X-Windowでターミナル画面を開き、seyonとコマンドを打つとターミナルソフトを起動。
>> Error: /OFV/...
>> Notice: Tried...
>> Notice: Tried...
と3行クレームが来るがseyonで動作テストするだけなので気にしない。
atと入力すると、モデムからOKと返答がこれば正常、そうでなければ
何か問題が残されている。
OMRON.ME-5614Eモデムではat&vキー入力するとステータス情報をモデムが何行も返答してくる。)
(OMRON.ME-2814B2モデムではat\sとキー入力するとステータス情報をモデムが何行も返答してくる。)
ちなみにseyonのDTE速度は9600ボーで初期化された。
mgettyはあるか?
# find / -name mgetty*
/etc/logrotate.d/mgetty
/etc/mgetty+sendfax
/etc/mgetty+sendfax/mgetty.config
/sbin/mgetty
・・・
mgetty 各設定ファイル、それぞれ下記のようにした。
○mgetty.configの設定
# vi /etc/mgetty+sendfax/mgetty.config
# ----- global section -----
# debug 4
debug 9
# fax-id 49 115 xxxxxxxx(自分の電話番号)
fax-id 052 123 4567
# speed 38400(下行で設定するのでここでは不要かも)
speed 38400
#モデムの所有者とそのパーミッション
port-owner root
port-group uucp
port-mode 0644
#FANデータの所有者とそのパーミッション
fax-owner root
fax-group uucp
fax-mode 0640
# ----- port specific section -----
# My Port
port ttyS0
speed 38400
data-only y
modem-type data
init-chat "" ATS0=0Q0M0&D3&C1&S1 OK
force-init-chat "" \d\d\d+++\d\d\dATZ0 OK ATS0=0Q0M0&D3&C1&S1
OK
補足、
debug 9 は、/var/log/mgetty.log.ttyS0 に9レベル(数字が多いほど詳細)のログが作られる。
正常動作後はコメントアウトする。
モデム-PC間の通信速度が38400ボー、
強制初期化force-init-chat,通常初期化init-chat,のヘイズATコマンドはモデムごとに違うので
モデム説明書を必ず参照、ここの例はこれでうまくいったと言うことで他の機器では問題が出るかもしれない。
ME-5614Eの設定
init-chat "" ATS0=0Q0M0&D3&C1&S1 OK
force-init-chat "" \d\d\d+++\d\d\dATZ0 OK ATS0=0Q0M0&D3&C1&S1
OK
AT、コマンドですよ、ということ
Z0、モデムソフトウエアリセット
OK、モデムが正常実行すると返答してくる文字(続けてコマンドを並べてもいいが通常初期化との違いを見た目分かりやすくしただけ)
S0=0、自動着信なし
Q0、リザルトコードあり
M0、モニタスピーカ常時OFF
&D3、ER信号ONからOFFへ変化したときリセット
&C1、CD信号は相手モデムのキャリアに従う
&S1、DR信号はシーケンスに従う
(ME-2814B2の設定
init-chat "" ATS0=0Q0M0&D3&C1&M5&S1 OK
force-init-chat "" \d\d\d+++\d\d\dATZ0 OK ATS0=0Q0M0&D3&C1&M5&S1
OK
AT、コマンドですよ、ということ
Z0、モデムソフトウエアリセット
OK、モデムが正常実行すると返答してくる文字(続けてコマンドを並べてもいいが通常初期化との違いを見た目分かりやすくしただけ)
S0=0、自動着信なし
Q0、リザルトコードあり
M0、モニタスピーカ常時OFF
&D3、ER信号ONからOFFへ変化したときリセット
&C1、CD信号は相手モデムのキャリアに従う
&M5、V.42設定あり(オート)
&S1、DR信号はシーケンスに従う)
○login.configの設定(PPPダイヤルインしてきたクライアントに与えるIPをついでに設定しておく)
# vi /etc/mgetty+sendfax/login.config
#/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap
+pap login debug
/AutoPPP/ - a_ppp /usr/sbin/pppd
-detach auth -chap +pap debug 192.168.0.1:192.168.0.2
* - - /bin/login @
○オプション
# vi /etc/ppp/options(ここではまだlock1行のみ、チェック段階ではPPP接続させない、後で編集)
lock
○ppp着信IP
# vi /etc/ppp/pap-secret(これもついでに設定しておく)
* * ppplogin 192.168.0.2
○inittabの設定
電源起動時に起動するようにする。
# vi /etc/inittab 最下行に下記1行を追加
s1:2345:respawn:/sbin/mgetty ttyS0
そしてリブート、
ps xaで起動しているか確認する。
では通信経路のテスト
WindowsMeにあるハイパーターミナルからCOM1ダイレクト接続で
モデムに直接ヘイズコマンドを打ち通信確立を試みる。
経路は:WindowsMe-ハイパーターミナル-COM1-モデム1(ME-2814B2)-MN128SOHOSL11(ダイヤルインで2
つ電話番号が取ってある)アナログ1-NTT-MN128SOHOSL11アナログ2-モデム2(ME-5614E)-ttyS0-mgetty-telnet
ハイパーターミナルで
atとキー入力
OKと出れば正常動作している。
トーンもモードにする。
att
OK
電話をかける。
atd123-426-7890
そうすると・・・・
CONNECT 28800/LAPM-V
TurboLinux release 6.5 Server (Jupiter)
on an i686 (
)
VC: l
host01 login: dareka
Password:
・・・・・
と、使えるようになる。(CONNECT以下の引数はモデムにより異なる)
ttyS0から直接rootログインは出来ないようには設定ファイルに記述されている、
IPマスカーレードもかねてネットワークの確認
turbonetcfgで確認。
GNOME.rkvtにて、turbonetcfg
基本設定
ホスト名:host01
ドメイン名:noneをkaisya.co.jpに変更
検索ドメイン:kaisya.co.jp
DNCネームサーバー:192.168.0.1
GatewayのIP:192.168.1.123
Gatewayの機器:eth1
ホスト一覧
IP:127.0.0.1
FQDN:localhost.localdomain
ホスト名:localhost
追加
IP:192.168.0.1
FQDN:host01.kaisya.co.jp
ホスト名:host01
ネットワークインターフェース
[ ]eth0:192.168.0.1
[ ]eth1:192.168.1.128
[*]lo:127.0.0.1
トラブル発生、[ ]が[*]になっていない。
eth0,1両方とも認識されていない。
トラブル調査、解消。
root でログオン 、GNOME.rkvtにて
/etc/conf.modulesが無い?TurboLinux6.1ではファイル名が
/etc/modules.confに変更されている。
/etc/modules.confの内容をviで参照すると
alias char-major-10-175 agpgart
keep
path[pcmcia]=lib/modules/`uname -r`
alias net-pf-5 appletalk
alias agpgart
alias eth0 3c90x
alias eth1 3c90x
alias parport_lowlevel parport_pc
alias sound-slot-0 i810_audio
alias usb-controller usb-uhci
このように書かれていた。自動検出がうまくいっているみたい。
でも実際はうまく認識していなかった。
# ifconfigを実行してもeth1が無い、loだけある。
# ifconfig eth0を実行すると出る。
# ifconfig eth1を実行すると出る。
# ifconfig -aを実行するとeth0,1も表示される。
# ifconfig eth0 upを実行するとSIOCSIFFLAGS: リソースが一時的に利用できませんが表示される、なぜ?
HWaddr 00:00:00:00:00:00 で入っていない。
/etc/modules.confの内容をviで
alias eth0 3c90x
alias eth1 3c90x
を
alias eth0 3c59x
alias eth1 3c59x
したら、HWaddrが入った。
3c90xでは機能しないようだ。
eth0.I/O.Base address:0xd800
eth1.I/O.Base address:0xd400
しかし、どちらもIRQが表示されていない。
WindowsMeで起動しIRQを調べる。
eth0.irq03.mem:F6000000-F600007F.I/O:D000-D07F
eth1.irq09.mem:F6000080-F60000FF.I/O:D080-D0ff
ちゃんと使用できる状態である。
BIOSを調べる。
Plug & Play O/S [Yes]を[No]にする。
★これが原因だった。
何度か/etc/modules.confの内容をviで編集して
alias eth0 3c59x
alias eth1 3c59x
で正常動作した。なぜか3c90xでは機能しない。
LANカードは3c90xシリーズなのに?
networkの編集。
起動後、手動で下記を入力するのは面倒なので、
echo 1 > /proc/sys/net/ipv4/ip_forward
起動時/etc/rc.d/rc.sysinitから呼び出される、
/etc/sysconfig/networkを編集する。(変更項目のみ記載)
FORWARD_IPV4=yes
# vi /etc/sysconfig/network
NETWORKING=yes
PROFILENAME="No_Profile" ←"(null)"をTurboLinuxS6.1のデフォルト"No_Profile"に設定する
HOSTNAME=host01
DOMAINNAME=kaisya.co.jp
GATEWAY=192.168.1.123
GATEWAYDEV=eth1
FORWARD_IPV4=yes
←"no"を"yes"に設定する
IPX=no
考察
HOSTNAME=host01は
HOSTNAME=host01.kaisya.co.jpの記述の方がいいのかな。
Turbonetcfgでeth0,eth1を確認する。
ネットワークインターフェース
eth0
DHCPを使用しない。
IP:192.168.0.1
ネットマスク:255.255.255.0
ネットワーク:192.168.0.0
ブロードキャスト:192.168.0.255
eth1
DHCPを使用しない。
IP:192.168.1.128
ネットマスク:255.255.255.0
ネットワーク:192.168.1.0
ブロードキャスト:192.168.1.255
セーブしてreboot
# ifconfig
# ifconfig eth0
# ifconfig -a
を実行してeth0,1が追加を確認した。
ipchainsの設定
動作の概要
/etc/rc.d/init.d/ipchainsで設定を起動しそこから
/etc/sysconfig/ipchainsのユーザー設定を参照している。
現状設定をsaveすると/etc/sysconfig/ipchainsに保存される記述が
/etc/rc.d/init.d/ipchainsにある。
では、/etc/sysconfig/ipchainsを編集する。(変更項目のみ記載)
(第一文字目にスペース入れることそうしないとipchains-A てな具合にコマンドとパラメータがつながってしまう。)
-P forward DENY
-A forward -s 192.168.0.0/24 -d 0.0.0.0/0 -j MASQ
全部 DENY してから一部通すという記述
追加モジュールファイルを作る。
# cp /etc/sysconfig/ipchains /etc/rc.d/rc.modules
# chmod 755 /etc/rc.d/rc.modules
vi /etc/rc.d/rc.modules
コメント#を全部取り、下記だけの行にして編集する。
1文字目空白なしでもあってもいいけど
TurboLinux6.0ではたしか取らなくても良かったはずの"ip_masq_ftp.o"の".o"を取らないといけない。
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_raudio
/sbin/modprobe ip_masq_irc
/sbin/modprobe ip_masq_cuseeme
/sbin/modprobe ip_masq_vdolive
/sbin/modprobe ip_masq_quake
自動起動の確認
turboserviceでipchainsを自動起動設定
(タイミングによってうまく設定できないときはもう何回か行う、5秒サイクル更新なので注意)
reboot
turboserviceでipchainsの詳細確認
ランレベルは3.4.5に(*)が入っていた。
外部から内部へ
192.168.0.xのIPを持つWindows98マシンをセット(eth0(192.168.0.1):IPをゲートウエイに登録をするのを忘れずに。)
eth0側LANと接続
eth0(192.168.0.1)へpingできた。
eth1(192.168.1.128)へpingできた。
よってOK。
eth1側にLANケーブルを接続し、
eth1側(192.168.0.123)へpingできない。
よってOK。
内部から外部へ
192.168.1.xのIPを持つWindows98マシンをセット(★eth1(192.168.0.1):IPをゲートウエイに登録をするのを忘れずに。)
eth1側LANと接続
eth1(192.168.1.128)へpingできた。
eth0(192.168.0.1)へpingできた。
よってOK。
eth0にWANケーブルを接続し、その先の何処か存在するIPに
pingでる。
よってOK。
動作状況を確認。
ipchains -L
(LANケーブルを接続していないと結果が出るのに時間がかかる)
ここからはIPマスカレードではない。
PPPの着信設定。
# vi /etc/ppp/optionsの編集
asyncmap 0
netmask 255.255.255.0
proxyarp
lock
crtscts
modem
"/AutoPPP/ - a_ppp"の行が1行だけか確認
# cat /etc/mgetty+sendfax/login.config
/AutoPPP/ - a_ppp /usr/sbin/pppd -detach auth -chap +pap login 192.168.0.1:192.168.0.2
mgettyの確認
# cat /etc/inittab
s1:2345:respawn:/sbin/mgetty ttyS0
際下行に1行追加
# vi /etc/rc.d/rc.local
modprobe ppp
reboot
"ユーザID" "*" "パスワード" "PPPで接続してきたパソコンに供給するIPアドレス"を記述
# vi /etc/ppp/pap-secrets
yuuzaa * pasuwaad 192.168.0.2
このPPP着信サーバに接続するパソコンの設定は
TCP/IPのプロパティでDNSサーバにこのパソコンのIP、192.168.0.1
POP,SMTPサーバはIP、192.168.1.123
ここまでの設定で遠隔パソコンにメールサーバをIPアドレスで記載すれば機能する。
が、
POP,SMTPサーバとかmailsvr.kaisya.co.jpとやっぱり入力したいので、
メールサーバをドメイン名で表記するには下記DNSサーバを機能させる。
DNSの設定、ここはWAN上のDNSでなくローカル内のDNS
これはTurboLinux ServerJ6.5のユーザーズガイドにあるがまま、とはいえ要点のみ。
# vi /etc/resolv.conf
domain kaisya.co.jp
search kaisya.co.jp
nameserver 192.168.0.1
# vi /etc/named.conf
// generated by named-bootconf.pl
options {
directory "/var/named";
/*
* If there is a firewall
between you and nameservers you want
* to talk to, you
might need to uncomment the query-source
* directive below.
Previous versions of BIND always asked
* questions using
port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address
* port 53;
};
//
// a caching only nameserver config
//
//(最新キャッシュファイルを取り寄せなら
//# ftp rs.internic.net
;FTP接続
//# get named.root
;ダウンロード
//# bye ;終了
//# mv named.root /var/named/ca ;格納
//たぶん同じファイルである?)
zone "." {
type hint;
file "named.ca";
};
//ホスト(ドメイン)名に対するIPが書かれている。
zone "kaisya.co.jp" {
type master;
file "kaisya.co.jp";
};
//"192.168.0.x"グループのホスト(ドメイン)名が書かれている。
zone "0.168.192.in-addr.arpa" {
type master;
file "0.168.192.in-addr.arpa";
};
//"192.168.1.x"グループのホスト(ドメイン)名が書かれている。
zone "1.168.192.in-addr.arpa" {
type master;
file "1.168.192.in-addr.arpa";
};
//"127.0.0.x"グループ(パソコン自分自身ローカルホスト)のホスト(ドメイン)名が書かれている。
zone "0.0.127.in-addr.arpa" {
type master;
file "0.0.127.in-addr.arpa";
};
# cp /var/named/named.local /var/named/kaisya.co.jp
# vi /var/named/kaisya.co.jp
補足"@"は"kaisya.co.jp."を示している。
@ IN SOA
host01.kaisya.co.jp. root.host01.kaisya.co.jp. (
20011001 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
86400 ) ; Minimum
IN
NS host01.kaisya.co.jp.
IN
MX 10 host01.kaisya.co.jp.
host01 IN A
192.168.0.1
guest IN A
192.168.0.2
mailsvr IN A
192.168.1.123
localhost IN A 127.0.0.1
# cp /var/named/kaisya.co.jp /var/named/0.168.192.in-addr.arpa
# vi /var/named/0.168.192.in-addr.arpa
@ IN SOA
host01.kaisya.co.jp. root.host01.kaisya.co.jp. (
20011001 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
86400 ) ; Minimum
IN
NS host01.kaisya.co.jp.
IN
PTR kaisya.co.jp.
IN
A 255.255.255.0
1 IN PTR
host01.kaisya.co.jp.
2 IN PTR
guest.kaisya.co.jp.
# cp /var/named/0.168.192.in-addr.arpa /var/named/1.168.192.in-addr.arpa
# vi /var/named/1.168.192.in-addr.arpa
@ IN SOA
host01.kaisya.co.jp. root.host01.kaisya.co.jp. (
20011001 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
86400 ) ; Minimum
IN
NS host01.kaisya.co.jp.
IN
PTR kaisya.co.jp.
IN
A 255.255.255.0
123 IN PTR
mailsvr.kaisya.co.jp.
# cp /var/named/1.168.192.in-addr.arpa /var/named/0.0.127.in-addr.arpa
# vi /var/named/0.0.127.in-addr.arpa
@ IN SOA
host01.kaisya.co.jp. root.host01.kaisya.co.jp. (
20011001 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
86400 ) ; Minimum
1 IN PTR
localhost
停止(デフォルトでは起動している)
/etc/rc.d/init.d/named stop
起動
/etc/rc.d/init.d/named start
動いているかどうか調べる
ps aux | grep named
named 553 0.0 1.2 2536 1680 ? S 11:48 0:00 named -u named -g
以前の表記
root 742 0.0 6.8 2388 1528 ? S 10:41 0:00 named (FLORA-DS2/DM2の返事)
root 313 0.0 3.1 1428 980 ? S 13:41 0:00 named (以前のV5200DE6の返事)
root 203 0.0 3.2 1440 1000 ? S 00:55 0:00 named (TurboLinuxS1.0のマニュアル)
ping host01.kaisya.co.jp
64 bytes from host01.kaisya.co.jp (192.168.0.1): icmp_seq=0 ttl=255
time=69 usec
...
[Ctrl][C]
自分にpingできた。
ping mailsvr.kaisya.co.jp
64 bytes from mailsvr.kaisya.co.jp (192.168.1.123): icmp_seq=0 ttl=255
time=890 usec
...
[Ctrl][C]
メールサーバにpingできた。
チェックはnslookupの方がいいかも?
# nslookup host01.kaisya.co.jp
# nslookup mailsvr.kaisya.co.jp
turboserviceでnamedの自動起動を設定しておく。
これでドメイン名称で参照できるようになった。
このサーバもメンテナンスでたくさんのログをrootに送っている。
そこでsendmailも入れてメールを管理者に転送しておくと便利である。
(このパソコンでメールを扱うわけでない。)
ここからメールの設定
# vi /var/src/CF-3.7Wpl2/sendmail.def
TurboLinuxServer6.1では/usrにあったのだが場所が変わった。
(編集後)
CF_TYPE=R8V8
LOCAL_VERSION=`date +%y%m%d%H`
OS_TYPE=linux-redhat
MX_SENDMAIL=yes
MY_DOMAIN=kaisya.co.jp
MY_NAME=host01
OFFICIAL_NAME='$w.$m'
FROM_ADDRESS='$m'
RECIPIENT_GENERIC=yes
REWRITE_GENERIC_FROM=lower
REWRITE_GENERIC_TO=no
CANON=one
ACCEPT_ADDRS='$m'
ACCEPT_LOWER=yes
ALWAYS_APPEND_DOMAIN=yes
LOCAL_MAILER_PATH='/usr/bin/procmail'
LOCAL_MAILER_FLAG_BASE='lsDFMAw5:/|@qSPfhn9'
PROG_MAILER_PATH='/usr/libexec/smrsh'
PROCMAIL_MAILER_PATH=/usr/bin/procmail
PROCMAIL_MAILER_ARGS='procmail -Y -m $h $f $u'
PMLOCAL_MAILER_ARGS='procmail -Y -a $h -d $u'
PROCMAIL_MAILER_FLAG='DFMSPhnu9'
PMLOCAL_MAILER_FLAG='lDFMAw5:/|@SPqfhn9'
BITNET=auto
REJECT_JUNET=yes
DIRECT_DELIVER_DOMAINS=all
DIRECT_DELIVER_MAILER=smtp
HELP_FILE_PATH='/etc/mail/sendmail.hf'
FORWARD_FILE_PATH='$z/.forward.$w:$z/.forward'
STAT_FILE_PATH='/var/log/sendmail.st'
MAIL_RELAY_RESTRICTION=yes
LOCAL_HOST_IPADDR=/etc/mail/localip
LOCAL_HOST_DOMAIN=/etc/mail/localdomain
ALLOW_RELAY_TO=/etc/mail/relay.to
参考:
メールサーバーがローカルに複数ある場合
asan@host01.kaisya.co.jp から
bsan@mailsvr.kaisya.co.jp とか
1台目から2台目へメールを送りたい場合がある。
ACCEPT_LOWER=yes
だと1台目から2台目へ送ろうとしても
host01サーバー内にbsanを探してしまい
mailsvrサーバーに届かない。
届くようにするには、
#ACCEPT_LOWER=yes
とコメントアウトするだけでいい。
注意として1台目から2台目に送る場合、
bsan@mailsvr.kaisya.co.jp と記載すること、
bsan@kaisya.co.jp では
DNS参照する以前に
host01サーバー内にbsanを探してしまい
mailsvrサーバーに届かない。
こうしておけば事前に
host01サーバーに送られるメールを全て
/etc/aliases の内容にそって
/etc/aliases の内容を変更した時(newaliases)から
以降に送られてくるメールについて
mailsvrサーバーに転送できる。
臨時的に/var/spool/mail/bsanファイルを
host01サーバーからmailsvrサーバーへフロッピディスクにてコピーしても良いけど面倒ですもんね。
メールがローカルより出られるようにする記述の部分は。
LOCAL_HOST_IPADDR=/etc/mail/localip
LOCAL_HOST_DOMAIN=/etc/mail/localdomain
ALLOW_RELAY_TO=/etc/mail/relay.to
# vi /etc/mail/localip
下記1行を記載(行末に改行を入れること)
192.168.0
192.168.0.xxx のIPで送られてくるローカルIPのメールを受信・中継する。
IPマスカレードしているのでマスカレード側192.168.1でもいい。
# vi /etc/mail/localdomain
下記1行を記載(行末に改行を入れること)
kaisya.co.jp
xxx.kaisya.co.jp のドメインで送られてくるローカルなメールを受信・中継する。
# vi /etc/mail/relay.to
下記1行を記載(行末に改行を入れること)
kaisya.co.jp
xxx.kaisya.co.jp のドメインで送られてくるローカルなメールを送信許可する。
makeコマンドはインストールされていた。
# cd /var/src/CF-3.7Wpl2
# make sendmail.cf
MASTERDIR=./Master TOOLDIR=./Tools \
./Tools/Configure sendmail.def > sendmail.cf.tmp
mv -f sendmail.cf.tmp sendmail.cf
make 出来た。
転送する
# mv -f sendmail.cf /etc/.
DNSパソコンにhost01パソコンを登録してあるのを確認。
このパソコンのDNSでなく192.168.1側
(192.168.1側にDNSサーバがあれば登録して、なければ登録しない。)
DNSパソコンのBINDへの登録
ユーザーメールアドレスは、???@host01.kaisya.co.jpで扱うことをMXレコードに記述
# vi /var/named/kaisya.co.jp
下記を追加
host01.kaisya.co.jp. IN A
192.168.1.128
IN MX 10 host01.kaisya.co.jp.
再起動
/etc/rc.d/init.d/named stop
/etc/rc.d/init.d/named start
ここからこのパソコン
このパソコンのDNSでなく192.168.0側
# vi /var/named/kaisya.co.jp
@ IN SOA
host01.kaisya.co.jp. root.host01.kaisya.co.jp. (
20011001 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
86400 ) ; Minimum
IN
NS host01.kaisya.co.jp.
IN
MX 10 mailsvr.kaisya.co.jp. <---???@kaisya.co.jp宛メールは???@mailsvr.kaisya.co.jp扱い
host01 IN A
192.168.0.1
IN
MX 10 mailsvr.kaisya.co.jp.
guest IN A
192.168.0.2
IN
MX 10 mailsvr.kaisya.co.jp.
mailsvr IN A
192.168.1.123
IN
MX 10 mailsvr.kaisya.co.jp.
localhost IN A 127.0.0.1
;
mail IN IN CNAME
mailsvr.kaisya.co.jp. <---???@mail.kaisya.co.jp宛メールは???@mailsvr.kaisya.co.jp扱い
再起動
/etc/rc.d/init.d/named stop
/etc/rc.d/init.d/named start
sendmail のデフォルト動作確認
/etc/rc.d/init.d/sendmail stop
/etc/rc.d/init.d/sendmail start
sendmail -bt ;テストモード起動
・・・/etc/aliasesが無いと行って来る。
CTRL+D ;終了
/etc/aliasesの作成
# cp /etc/mail/aliases /etc/.
# vi /etc/aliases
# @(#)aliases
8.2 (Berkeley) 3/5/94
#
# Aliases in this file will NOT be expanded in the header from
# Mail, but WILL be visible over networks or from /bin/mail.
#
# >>>>>>>>>>
The program "newaliases" must be run after
# >> NOTE >>
this file is updated for any changes to
# >>>>>>>>>>
show through to sendmail.
#
# Basic system aliases -- these MUST be present.
MAILER-DAEMON: postmaster
postmaster: root
# General redirections for pseudo accounts.
bin:
root
daemon: root
games: root
ingres: root
nobody: root
system: root
toor: root
uucp: root
# Well-known aliases.
manager: root
dumper: root
operator: root
# trap decode to catch security attacks
decode: root
# Person who should get root's mail
#root: <your
username here>
root: zibun@mailsvr.kaisya.co.jp
自分(管理者)のメールアドレスを記載。
これでログを転送、ここでmailsvrをmailでは使えない。(このパソコンでのmailと転送先のmailと重複し参照エラーになる。)
# cd /etc
エイリアスをデータベース化する。
# newaliases
/etc/aliases: 16 aliases, longest 18 bytes, 195 bytes total
# /etc/rc.d/init.d/sendmail stop
# /etc/rc.d/init.d/sendmail start
sendmail -bt ;テストモード起動
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
0 Asan@kaisya.co.jp
.....
rewrite: ruleset 0 returns: $# local $: Asan ;ローカルにメールを出している。
0 Bsan@nifty.co.jp ;Bsan にメールを出してみる。
.....
rewrite: ruleset 0 returns: $# smtp $@ nifty . co
. jp . $: Bsan < @ nifty . co . jp > ;SMTP にメールを出している。
CTRL+D ;終了
(Asanの前にあるのは数字のゼロを入れる)
実際はWAN側DNSサーバを参照できていないので、
このパソコンのsendmail経由では外部にメールは流れない。
あくまで、このパソコンのroot宛メールの転送用に使う。
PPP着信してきた遠隔パソコンは
着信パソコン内のDNSを参照させるだけで、
着信パソコン内のsendmailは関係ない。
★ローカルエージェントをリンクして使う。
/usr/sbin/mail.local が無いから、
/usr/bin/procmail を使う。
# ln -s /usr/bin/procmail /usr/sbin/mail.local
# /etc/rc.d/init.d/sendmail stop
# /etc/rc.d/init.d/sendmail start
POP3 の確認
# vi /etc/inetd.conf
編集後
.....
# Pop and imap mail services et al
#
#pop-2 stream tcp nowait
root /usr/sbin/tcpd ipop2d
pop-3 stream tcp nowait
root /usr/sbin/tcpd ipop3d
#imap stream tcp nowait
root /usr/sbin/tcpd imapd
.....
inet の再起動
# /etc/rc.d/init.d/inet restart
root でメールのテスト
# sendmail -v root ;メール送信
test-mail(subject) ;1行目にサブジェクトを入力
This mail is TEST. ;2行目以降に本文を入力
. ;最終行に終わりであることのピリオドの入力
root... Connecting to local... ;オプションの-vにより配送過程を明示
root... Sent ;オプションの-vにより配送過程を明示
aliaseで指定したメールアドレスに配信される。
You have mail in /var/spool/mail/root ;無事メールが配送された。
着信メールの内容を見る。
mail
Mail version 5.5-kw 5/30/95. Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N 1 dareka@kaisya.co.jp
Mon AUG 23 13:31 11/313
& 1 (上記メールリストが出るから、その番号を入れる。)
Message 1:
From one Mon AUG 23 13:31:06 1999
Received: (from root@localhost)
by host01.kaisya.co.jp (8.9.3/3.7W99082309)
id NAA04735
for root; Mon, 23 Aug 1999
13:30:27 +0900
Date: Mon, 23 Aug 1999 13:30:27 +0900
From: dareka@kaisya.co.jp
Message-Id: <199908230430.NAA04735@host01.kaisya.co.jp>
Status: R
test-mail(subject)
This mail is TEST.
& q (mail を終了する。)
ローカルでメールの送受信が出来た。
受信メールサーバPOP3 を外部から使えるようにする。
セットしているsendmailでは転送しかしないので、下記は基本的には不要。
# vi /etc/hosts.allow
下記1行を追加
ipop3d : ALL : allow
inet の再起動
# /etc/rc.d/init.d/inet restart
ずいぶん楽にできるようになりました。
注意:受信はいいのですが、アカウントごとに外部送信するには、メールサーバでsmtpを(sendmailならpop before smtp手法とかで)開けてやる、全アカウント通してもいいならメールサーバの/etc/mail/localipに着信パソコンのIPがあれば良いです。
one.