- PR -

sendmailとqmailの違いについて

投稿者投稿内容
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-05-12 10:38
どもでし。がるです。

引用:

きよぷーさんの書き込み (2005-05-12 01:23) より:
なぜご質問させてもらったかというと、仕事で「sendmail」から「qmail」への移行作業をすることになり、「qmail」というのが理解できず苦しんでいる次第です。


なるるです。「なぜ移行するのか?」については、厳密にはそれを決めた方に
確認をしたほうがよいと思うのですが :-P

その辺でしたら、少し根の深い思想背景の話を少し。

昔々のその昔。今で言うSMTPを用いたemailは「電子通信上でメッセージを
交換する1手段」でしかなく、今のように「ほぼこれ一本」というほどには
主役をはれずにいました。
さまざまなプロトコルがしのぎを削っていたのです。

そんななか、ある人が考えました。
「そうだ。設定ファイル一本でさまざまなプロトコルに対応できるプログラム
を作ろう!!」
こうして、sendmailが出来上がります。
sendmailは、それはそれは巨大なプログラムです。しかも、設定ファイルである
sendmail.cfは、並大抵の人では書けないほど複雑なものになりました。
# 今、日本で「必要十分な設定を0からいきなり書ける人」がどのていどいるんだろう…

sendmailは、このように「未知のプロトコルにも対応する」事を考えた
プログラムです。
すばらしく汎用性が高い代わりに、それは非常に巨大なものとなり
(UNIXの思想とはほぼ逆行しています)、セキュリティホールも増えました。
それでも、さまざまな場所で使えるために、一気に広がっていっています。

[余談]
UNIXは、本来「ひとつの仕事だけができるもの」の集合体です。
複雑なものは「たくさんの"ひとつだけ"」に分解するのが、本来の
UNIXの思想背景です。
このあたり、「UNIXという考え方―その設計思想と哲学 オーム社 ISBN:4274064069」
を読むとよいと思います。
[/余談]

しかし、ある時期。sendmailのバグの多さその他に腹を立てた人物が、
sendmailとは思想的に異なるSMTPサーバを作りました。
それは、sendmailの問題点に真っ向から対決する形での設計でした。
・セキュリティホールが多い。特に「root権限をぶんどられる」から怖い
 ・なぜroot権限が必要?
 ・それは「受信したメールをユーザ権限のファイル/ディレクトリに書き込む」から
 ・ならば「書き込むプログラム」を別デーモンにして、そいつだけrootにしよう
 ・そもそも、Mail配信は「いくつかの"ひとつ"に分離できる」はず
 ・じゃぁ、プログラム自体を複数に分離しよう
・設定ファイルが複雑
 ・なんで? それは「未知のプロトコル」にも対応できるから
 ・んじゃSMTPのみに特化すればもっと楽に書けるはず

こんな思想背景で作られたのが、qmailです。
そのため、qmailは
・デーモンが複数ある
・設定ファイルが複数ある(そのかわり、各ファイルの書式はシンプルである
という特徴があるのです。

このため、たいていの場合、sendmailからqmailへの切り替えは
・セキュリティまわり
が理由になることが多いようです。

その辺をもう少し突き詰めてみると、いろいろ楽しいかもしれないですよ ^^
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-05-12 11:28
こんにちは。
引用:
なぜご質問させてもらったかというと、仕事で「sendmail」から「qmail」への移行作業をすることになり、「qmail」というのが理解できず苦しんでいる次第です。


参考になるかどうか、私が sendmail → qmail 移行に携わった時のことを少し。
※ マシンリプレイスに併せて、MTA を好きなように設計できる機会があったので、qmail を選択したのです。

まず、sendmail を使っていたとしても、その機能をフルに活かしている例は稀です。
それどころか、機能を全て把握している人もいない。( 私も把握しきれません )
逆に、曖昧な部分に振り回されてトラブルシューティングが困難になることも…。

なので、sendmail で実現している機能を読み解くのではなく、現状のメールの使われ方を把握して、それを実現するために設計を試みました。
それであれば、sendmail と qmail を比較する必要はなくなります。
逆に言えば、sendmail の事を考えない方が、移行の際の qmail 設計は上手く行くのではないかと思っています。

尤も、メールボックスやアカウントの移行の際は、sendmail での実装方法を知っておく必要がありました。

その時は…、
・メールアカウント → UNIX上のユーザと等価
・メールパスワード → /etc/passwd, /etc/shadow で管理される
・メールボックス → /var/mail/アカウント に、mbox形式で保存
・メールアドレス、メールアカウントの対応 → /etc/aliases で管理
・グループアドレス(簡易ML) → /etc/aliases で管理
・転送 → /etc/aliases や .forward で管理

のような感じでした。
ちなみに qmail に移行する際には、qpopper → qmail-pop3d へPOPサーバを変更し、メールボックスは Maildir 形式、ユーザ管理は vpopmail での仮想ユーザ、今までの aliases はそのまま fastforward で使いまわしました。

…と、いうことで、比較を考えないで qmail の勉強をすることを、個人的にはお奨めします。( 比較は後でもできる )
はゆる
ぬし
会議室デビュー日: 2004/02/16
投稿数: 1008
お住まい・勤務地: 首都圏をウロウロと
投稿日時: 2005-05-12 14:02
こんにちは。

きよぷー さんは、sendmail を構築した経験がおありでしょうか?
sendmail も qmail も、「メールを配送するサーバソフトウエアである」 という点では同じです。
メール配送の仕組みについては、@IT さんの下記の記事あたりが参考になると思います。
http://www.atmarkit.co.jp/fnetwork/rensai/netpro05/netpro01.html
http://www.atmarkit.co.jp/fnetwork/rensai/tcp03/01.html

では、何が違うのか? ということになりますが、そこは他の方のご説明にお譲りして…
(こちら http://www.atmarkit.co.jp/flinux/rensai/qmail01/qmail01a.html にも記述がありますね)
個人的には、何かしらの書籍を読まれることをお勧めします。
といいますのも、インターネット上のドキュメントを検索するにも、「一般的な語句」 が分からないと資料を見つけるまでに時間がかかりますし、質問しようにも、的確に説明できない場合が多いからです。

私は qmail を試したことがないのですが、先にご紹介されている書籍以外にも、qmailで作るメールサーバ徹底攻略 が丁寧に書かれているなぁと思った記憶があります。
# sendmail でしたら、UNIX Network sendmail―メールサーバの構築と管理 あたりが読みやすいかと
# (ただし、バージョン 8.12 の説明になっています)
_________________
はゆる
Smile, Smiles make me happy.
きよぷー
会議室デビュー日: 2005/05/11
投稿数: 6
投稿日時: 2005-05-13 13:33
みなさんありがとうございます。

今まで、qmailの設計はおろかsendmailの設計もした事がなく、
(CGIの変更はした事ありますが…)
ほぼ無知の世界でして、いろんなHPで調べてみて判ったのは
qmailのインストール後の設定方法ぐらいです。
恥ずかしいとは思いましたが、投稿してよかったです。
またわからない事があれば、投稿させて頂きます。

スキルアップ/キャリアアップ(JOB@IT)