#freeze
*exim4 … SMTPサーバ [#qd856600]
-''はじめに''~
以下のプログラムを使用してメール環境を構築したときのメモを記します。~
--SMTPサーバ … exim4 (debianのデフォルトメールサーバ)
--IMAPサーバ … dovecot (もれなくPOP3もついてくる)
--WEBメール … SquirrelMail~
~
-''参考ページ''~
次のページを参考にしました。~
--[[exim4でSMTP@Linux Home Server Memo:http://asshole.dip.jp/exim4_smtp.php]]~
--[[FreeBSDでEximを使ってみる:http://www5e.biglobe.ne.jp/~tbs-i/tech/exim/]]~
~
-''SMTP(Port25)のフォワード''~
LANDISKがメールの送受信を行えるよう、ADSLモデム(ルータ)のポート設定を行います。~
具体的には、smtpポート(25番)をLANDISK側へフォワードするように設定します。~
&color(red){ADSLモデムの設定変更やリセットでWAN側IPアドレスが変化する環境の方は、};~
&color(red){DynamicDNSの更新も同時に行ってくださいね。私はこれに気付かず、随分はまりました。};~
~
-''exim4の設定''~
#pre{{
landisk:~# dpkg-reconfigure exim4-config
}}
--Split configuration into small files?~
&color(red){No};~
--General type of mail configuration:~
&color(red){internet site; mail is sent and received directly using SMTP};~
--System mail name:~
&color(red){eggplant.ddo.jp};~
--IP-addresses to listen on for incoming SMTP connections:~
&color(red){空白};~
--Other destinations for which mail is accepted:~
&color(red){eggplant.ddo.jp};~
--Domains to relay mail for:~
&color(red){空白};~
--Machines to relay mail for:~
&color(red){空白};~
--Keep number of DNS-queries minimal (Dial-on-Demand)?~
&color(red){No};~
--Root and postmaster mail recipient:~
&color(red){landisk}; ← システムからの(各種ログ等の)メッセージを受信するメールアドレスを指定~
~
-''mail保存形式をmboxからMaildirへ変更''~
/etc/exim4/update-exim4.conf.confの最終行へ追加。~
#pre{{
dc_localdelivery='maildir_home'
}}
次に、ユーザのホームディレクトリにMaildirを作成します。~
例えば、ユーザ landiskの場合。~
#pre{{
landisk:~# su landisk
landisk@landisk:/root$ cd
landisk@landisk:~$ mkdir Maildir
landisk@landisk:~$ chmod 700 Maildir
landisk@landisk:~$ exit
landisk:~#
}}
-''設定が終了したらexim4を再起動します。''~
#pre{{
landisk:~# /etc/init.d/exim4 reload
Reloading exim4 configuration files
}}
*Dovecot … IMAP/POP3サーバ [#ud31271e]
-''インストール&設定''~
dovecotというIMAP/POP3サーバを使用してみようと思います。~
#pre{{
landisk:~# apt-get install dovecot
}}
補足:debian26-etch版では、
#pre{{
landisk:~# apt-get install dovecot-common dpvecot-imapd dovecot-pop3d
}}
/etc/dovecot/dovecot.conf の protocolsの行を次のように編集します。~
(POP3サーバも動作させたい場合は、pop3を追加。)~
#pre{{
protocols = imap
# protocols = imap pop3
}}
-''%%inetd経由で起動%% &color(red){追記:何故だかゾンビが残っちゃうのでヤメ!};''~
%%メモリ消費を抑えるため、inetdから呼び出すように設定します。%%~
%%/etc/inetd.confに次を追加します。%%~
#pre{{
%%imap stream tcp nowait root /usr/sbin/tcpd /usr/lib/dovecot/imap-login%%
%%#imaps stream tcp nowait root /usr/sbin/tcpd /usr/lib/dovecot/imap-login --ssl%%
%%pop3 stream tcp nowait root /usr/sbin/tcpd /usr/lib/dovecot/pop3-login%%
%%#pop3s stream tcp nowait root /usr/sbin/tcpd /usr/lib/dovecot/pop3-login --ssl%%
}}
%%inetdを再起動します。%%~
#pre{{
%%landisk:~# /etc/init.d/inetd restart%%
}}
%%この状態で、IMAP/POP3対応のメーラーからアクセスできると思います。%%~
%%なお、必要に応じて、TCPWapper(/etc/hosts.allow、/etc/hosts.deny)の設定を行ってください。%%~
-''Dovecotの起動''~
#pre{{
landisk:~# /etc/init.d/dovecot start
}}
この状態で、IMAP/POP3対応のメーラーからアクセスできると思います。~
*SquirrelMail … WEBメール [#b328e993]
-''&color(red){注意};''~
&color(red){本節では、HTTPSではなく、通常のHTTPプロトコルを用いたWEBメール環境を構築します。};~
&color(red){従って、インターネット上を平文のまま、パスワードやメール本文が送信されることを、ご留意ください。};~
&color(red){万が一に備え、WEBメール専用のアカウントでの使用をお勧めします。};~
&color(red){(それほど神経質にならなくても良いと思いますけど。)};~
-''インストール&設定''~
--インストール~
次のパッチを当てたパッケージを用意しました。~
---[[日本語文字化けパッチ:http://sanguine.jp/pipermail/squirrelmail-users/2005-January/001268.html]]~
---[[1.4.3a用のXSS脆弱性を修正するパッチ:http://internap.dl.sourceforge.net/sourceforge/squirrelmail/sm143a-xss.diff]]~
---+α(SquirrelMailコンフィグ設定済み)~
--
#pre{{
landisk:~# apt-get install squirrelmail locales
}}
※localesでは、''ja_JP.eucJP'' にチェックが必要~
~
--/etc/apache/conf.d/squirrelmail.conf を次の内容で用意~
#pre{{
Alias /squirrelmail /usr/share/squirrelmail
<Directory /usr/share/squirrelmail>
# php_value register_globals On # refer to Debian bug #128226
php_flag register_globals on
Options Indexes FollowSymLinks
<Files configtest.php>
order deny,allow
deny from all
allow from 127.0.0.1
allow from 192.168.1.0/24
allow from 192.168.0.0/24
</Files>
</Directory>
}}
--apacheの再起動~
#pre{{
landisk:/# apachectl configtest
Syntax OK
landisk:/# /etc/init.d/apache restart
Restarting apache.
}}
-''SquirrelMailへ接続''~
ブラウザから、http//MY_LANDISK/squirrelmail/で、SquirrelMailへ接続できます。~
~
CENTER:
&ref(squirrelmail.png,nolink);
~
~
*補足 … exim4 トラブルシューティング [#x31fe2cb]
-''MXレコードの確認''~
nslookupを使用してMXレコードが正しく得られるか確認します。~
(nslookupコマンドは、dnsutilsパッケージに入っいます。)~
#pre{{
landisk:~# apt-get install dnsutils
}}
MXレコードを取得してみます。~
#pre{{
landisk:~# nslookup -type=mx eggplant.ddo.jp
Server: 123.145.167.134
Address: 123.145.167.134#53
Non-authoritative answer:
eggplant.ddo.jp mail exchanger = 50 eggplant.ddo.jp.
Authoritative answers can be found from:
eggplant.ddo.jp internet address = 123.145.167.177
}}
正しく取得できました。~
~
DNSが正しく引けない場合は次のようなメッセージが出力されるようです。~
#pre{{
;; connection timed out; no servers could be reached
}}
(私の場合、プロバイダが指定するDNSサーバを/etc/resolv.confに設定するとうまくいきました。)~
~
-''配送テスト''~
メールの送受信テスト(シミュレート)を行います。~
(シュミレートなので、実際には、メールの送受信は行われません。)~
~
--内部から内部への送受信テスト~
チェックポイントの箇所がそれぞれ、次のようになっているとOKらしい。~
#pre{{
landisk:~# exim4 -bt
> &color(red){landsik}; &color(orange){← 配送先を入力};
R: system_aliases for landisk@eggplant.ddo.jp
R: userforward for landisk@eggplant.ddo.jp
R: procmail for landisk@eggplant.ddo.jp
R: maildrop for landisk@eggplant.ddo.jp
R: local_user for landisk@eggplant.ddo.jp
landisk@eggplant.ddo.jp
router = local_user, transport = maildir_home &color(orange){← チェックポイント};
> &color(red){landsik@eggplant.ddo.jp}; &color(orange){← 配送先を入力};
R: system_aliases for landisk@eggplant.ddo.jp
R: userforward for landisk@eggplant.ddo.jp
R: procmail for landisk@eggplant.ddo.jp
R: maildrop for landisk@eggplant.ddo.jp
R: local_user for landisk@eggplant.ddo.jp
landisk@eggplant.ddo.jp
router = local_user, transport = maildir_home &color(orange){← チェックポイント};
> &color(orange){CTRL+Cで一旦抜ける};
}}
--外部への送信テスト~
(実験にyahooのSMTPサーバを使わせて頂く。)~
チェックポイントの箇所が、次のようになっているとOKらしい。~
#pre{{
landisk:~# exim4 -bt
> &color(red){postmaster@yahoo.co.jp}; &color(orange){← 配送先を入力};
R: dnslookup for postmaster@yahoo.co.jp
postmaster@yahoo.co.jp
router = dnslookup, transport = remote_smtp &color(orange){← チェックポイント};
host mta05.mail.yahoo.co.jp [202.93.83.211] MX=10
host mta06.mail.yahoo.co.jp [202.93.83.236] MX=10
host mta09.mail.yahoo.co.jp [202.93.87.209] MX=10
host mta02.mail.yahoo.co.jp [202.93.87.212] MX=10
host mta08.mail.yahoo.co.jp [202.93.87.210] MX=10
host mta07.mail.yahoo.co.jp [202.93.87.211] MX=10
host mta16.mail.yahoo.co.jp [203.141.44.225] MX=100
> &color(orange){CTRL+Cで一旦抜ける};
}}
--外部からの受信テスト~
次のコマンドを実行すると、<IP address>から届いた<email address>の~
受信/拒否判定が確認できるらしい。~
#pre{{
exim_checkaccess <IP address> <email address>
}}
では実際に実験を行ってみます。~
#pre{{
正常ケース
landisk:~# exim_checkaccess 123.123.123.123 landisk@eggplant.ddo.jp
Accepted
ドメイン正常でユーザが存在しないケース
landisk:~# exim_checkaccess 123.123.123.123 baduser@eggplant.ddo.jp
Rejected:
550 unknown user
ドメインが正常でないケース(踏み台にされないことのチェック)
landisk:~# exim_checkaccess 123.123.123.123 landisk@carrot.ddo.jp
Rejected:
550 relay not permitted
}}
-''第三者中継テストがパスしない''~
exim4は、不当なsmtpコマンドが連続して発行された場合、コネクションを自動的に~
クローズする機能を有する。(不当な攻撃に対する防衛処置)~
本機能が「アダ」となって、テストが続行できない。~
--[[RBL.JP:http://www.rbl.jp/svcheck.php]]~
#pre{{
>>> RSET
relay NOT accepted!!
中継テスト その13
}}
--[[abuse.net home page:http://www.abuse.net/relay.html]]~
#pre{{
Relay test 12
>>> RSET
<<< 554 Too many nonmail commands
Relay test result
Could not reset connection, test failed.
}}
--テスト時だけ、制限を緩和する。~
/etc/exim4/exim4.conf.templateへ次の2行を追加してデーモンの再起動を行う。~
#pre{{
smtp_accept_max_nonmail=20
smtp_max_synprot_errors=10
}}
(テストが終わったら追加した2行を削除し、元に戻しておくのが望ましい。)~
~
~
#counter