Linux による各種サーバー構築


SMTP/POP3 メールサーバーの構築


[前の階層へ] | [トップページに戻る]





いちいち、プロバイダのメールサーバーへ 33.6kbps とかで送らなくても、56kbps とかで一生懸命落としてこなくても、メールサーバーが自動的にそれをやってくれて、クライアントマシンを使う自分は「まるで」 100Mbps でメールが受信出来たら夢のよーではないかと(ぉぃ
# 実際には、サーバーが自動的に細い回線で送受信してるんだから、1クッションあるかないかの差だけ(^_^;)

もちろん、いっぱいノードがあるネットワークならそのネットワークのメールをそのネットワークのメールサーバーから出せれば利点も多いでせう。


さて、送るための SMTP サーバーである sendmail と、(サーバーマシンが)受け取るための POP3 クライアントである fetchmail、(クライアントマシンが)受け取るための POP3 サーバーである qpopper、それらを導入するのがココの目的。

どーゆーコトかってゆーと、送る場合は SMTP サーバーに向かってメーラー(SMTP クライアント)がメールを送信すれば、そのまま SMTP サーバー (sendmail) が他のメールサーバーに向かって送って届くワケ。

受け取る場合には、どこかの SMTP サーバー(厳密には SMTP クライアント)が送ってきたのが自分のメールサーバーに届くんだけど、この場合自分のメールサーバーってプロバイダのメールサーバーなワケで、自分はプロバイダのメールサーバーへ POP3 で取りに行かないといけないワケよね。
そのプロバイダのメールサーバーへ取りに行く POP3 クライアントが fetchmail なワケ。
# だから常時接続で取りに行かなくても直接届く環境なら fetchmail は要らないの。

そして、自分の構築したメールサーバーにメールを取ってきたとしても、今度はクライアントマシンの POP3 クライアントから自分の構築したメールサーバーへチェックした場合にそのメールをクライアントマシンで受信出来ないといけないワケだから、POP3 サーバーが必要よね。
それが、qpopper なの。

実際には、IMAP4 を使う手もあるんだけど、うちが POP3 で受信してるから POP3 なの(^_^;)

ちなみに、プロトコル自体についてはこのへんを読むべし(爆)


  1. アーカイブを展開・コンパイル。

    適当なトコから sendmail と qpopper のアーカイブファイルをげっとしてくるのです。
    げっとしてこなくても、もしかしたらディストリビュージョンの contrib の方に入ってるかも・・・とか(爆)
    # sendmail に至っては、デフォルトでインストールされるって話が(爆)

    そーゆーワケで、バイナリパッケージをげっとしたヒトは必要ないけど、ソースコードでげっとしたヒトはコンパイルしませう。

    ぼくは qpopper しか自分自身では入れてない(コンパイル・インストールしてない)から、qpopper しか知らないけど qpopper は

    configure
    make

    これでおしまい。
    あとは、出来た popper ってファイルを適当な場所 (/usr/sbin とか)にコピーするだけ(笑)

    あ、もしパスワードを shadow 化してる環境だったりするなら、configure には --enable-specialauth ってオプションを付けないと認証出来ないから該当する環境のヒトはオプションを忘れずに(謎)


  2. sendmail の設定。

    もしかしたら、噂くらいは聞いたコトがあるかもだけど、あの悪名高き sendmail.cf を書かないといけないのです。

    もちろんこっちも知ってるかもだけど、直接書かなくても CF ってソフトでコンパイル(コンバートに近い?(^_^;))するって形で、もっと簡単な設定ファイルを書くだけで(書式が簡単なだけで、設定項目はめちゃくちゃ多いけど(爆))おっけーなのです。
    その CF ってソフトもなければ入れないといけないんだけど、入ってないディストリビュージョンなんて知らない・・・(爆)

    概念的には送られてきたメールのヘッダをいぢって、別のトコ(目的地かもしれないし、他の SMTP サーバーかもしれない)に送り出すってゆーのが、sendmail の働きなんだけど・・・。

    それだけで分厚い専門書一冊になるくらい複雑だし、まともに理解しよーとしたら SMTP Protocol と sendmail の両方の仕様を理解しないといけないためにココで説明するのは不可能・・・(爆)
    # あれば読むけど、ないから読んでない(^_^;)>本

    とゆーワケで、ココでは日本語の注釈を付けた設定例だけ載せておくから、あとは RFC や CF の設定ファイルの書かれたドキュメント(/usr/src/CF-3.7Wpl2/doc/MANUAL.jpn とかそのへんのファイル)を読んで設定をしてもらうってゆーコトで(ぉぃ

    ちなみに、この設定は内部ネットワーク名が ufop.gov。メールサーバーが ncc-2893.ufop.gov。
    あと、localhost と 192.168.0.0/24 からのメールは全面的に受け入れて、mettice が出したメールの From は mettice@ncc-2893.ufop.gov ぢゃなくて mettice@ff.iij4u.or.jp に書き換えて出すよーな設定になってるのです。

    ちなみに、CF は CF のディレクトリ(/usr/src/CF-3.7Wpl2/ とか)で make sendmail.def とかすればコンパイル可能なのです。(それで出来た sendmail.cf とかのファイルを sendmail の設定ファイルが読み込まれる場所(大抵 /etc/ (^_^;))に置けば良いと)


  3. qpopper の設定。

    qpopper は特になんにも設定の必要はないのです。


  4. fetchmail の設定。

    メールチェックするユーザーのディレクトリに .fetchmailrc ってファイルが必要なの。

    例を挙げてしまえば、一目瞭然なんだけど

    set daemon 300
    poll mail.linux.com
    protocol pop3
    user linus
    password i_made_linux.
    

    こんな感じ。

    一番上の set daemon ってゆーのは、デーモン動作するってコトでその横の数字はメールチェック間隔(単位:秒)ね。
    あとは見たまんま(笑)
    mail.linux.com に POP3 プロトコルで、ユーザー名 linus、パスワード i_made_linux で 300秒おきにちぇっくってコト。

    ちなみに、確か .fetchmailrc のぱーみっしょんは 644 かなんかぢゃないといけなかったハズ。


  5. 起動時に自動起動するよーに設定。

    さすがに、メールサーバーを誰でも踏み台に使えるよーに(笑)公開しようなんて、クラッカーなヒト達に優しいヒトは居ないと思うから、やっぱしセキュリティ的なコトを考慮すれば、お手軽なトコでは TCP Wrapper でくるむのが一番っぽいでそ。

    ・・・とゆーワケで、TCP Wrapper から起動するってワケで、 /etc/services で smtp や pop3 ってゆー定義が書かれてるのを確認した上で、/etc/inetd.conf あたりに


    smtp    stream  tcp     nowait  root    /usr/sbin/tcpd sendmail -bs
    pop3    stream  tcp     nowait  root    /usr/sbin/tcpd popper
    

    なんて書いておけばおっけーなのです。
    もちろん、既に smtp や pop3 が定義されてた場合にはコメントアウト(頭に #)しとくコト。

    あと、fetchmail も起動させないといけないんだけど、それはどっかでうまくやるコト(爆)
    (非接続時にはチェックしないよーにする措置も必要だろーし)

    少なくとも、うちはまだ最良といえる方法が見つかってないのです(^_^;)


  6. 完成っ!

    できあがり〜♪(ぱちぱち)