- PR -

qmailによる複数メールデータの一元化の可否について

投稿者投稿内容
gankichi
会議室デビュー日: 2004/12/10
投稿数: 10
投稿日時: 2005-02-02 11:37
いつもお世話になっております。 gankichiと申します。

掲題の件で、お伺いしたい事がありまして書き込ませていただきました。

Redhat Enterprise Linux3.0 ES / AS を用いてメールサーバの構築を検討中です。
ここで、qmailをMTA/MUAとして利用するつもりで考えておるのですが
複数のメールデータの一元化が可能であるかについてお知恵を拝借したいと思っております。

MTAとしてメールをスプールするqmail稼動サーバ(MTA)は、機能的な問題と
冗長化の点から2台で外部メールを受け付けようと考えております。
 ※ ただし、この2台のサーバの持つメールデータは同じものではありません。
   機能的に、大量のメールを受け付けられるようにとの設計から
   RAIDでいう"RAID 0"のような、機能性を第一に設計しております。

この2台のメールサーバが持つデータを、1台のqmail稼動サーバ(MUA)で一元的に
管理したいと思っております。
そこで、qpopperをpopデーモンとして、2台のサーバからpop経由でデータを取得し、
一元化を計ろうと思っております。

このような構成で、qpopperが2つの異なる接続先から、メールデータを受信できるような
設定は可能でしょうか?
非常にわかりにくい説明で申し訳ございませんが、よろしくお願いいたします。


**** ここから ****

qmail_1(MTA)-----|
|-------qmail/qpopper(MUA)
|
qmail_2(MTA)-----|

【自動的に以下の動きを行わせたい】
  1.qmail_1(MTA)のメールデータをpopで取得
  2.qmail_1(MTA)のメールデータをpopで取得
  3.qmail_1(MTA)とqmail_2(MTA)のデータを一元化する


**** ここまで ****
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2005-02-02 17:44
こんばんわ.
引用:

gankichiさんの書き込み (2005-02-02 11:37) より:

MTAとしてメールをスプールするqmail稼動サーバ(MTA)は、機能的な問題と
冗長化の点から2台で外部メールを受け付けようと考えております。
 ※ ただし、この2台のサーバの持つメールデータは同じものではありません。
   機能的に、大量のメールを受け付けられるようにとの設計から
   RAIDでいう"RAID 0"のような、機能性を第一に設計しております。

この2台のメールサーバが持つデータを、1台のqmail稼動サーバ(MUA)で一元的に
管理したいと思っております。
そこで、qpopperをpopデーモンとして、2台のサーバからpop経由でデータを取得し、
一元化を計ろうと思っております。


とりあえず
qmail -> MTA
qpopper -> MRA
MUA は mail user agent ではないかと.
2つの MTA は「同じドメイン」の電子メールを受け取るのですか?
寡聞にして聴きませんが,qmail にそのような特殊機能があると思えません.
「どちらにも同じモノが送られる」のではなく,
「a@net.local は A Server,b@net.local は B Server」は,
それぞれの E_Mail address 毎に設定でもしなければ無理ではないかと.
引用:

このような構成で、qpopperが2つの異なる接続先から、メールデータを受信できるような
設定は可能でしょうか?
非常にわかりにくい説明で申し訳ございませんが、よろしくお願いいたします。


qpopper が2つの spool から電子メールコンテンツを引き出してくるのは無理だと思います.
とりあえず自分は聞いたことがありません.
引用:

qmail_1(MTA)-----|
|-------qmail/qpopper(MUA)
|
qmail_2(MTA)-----|

【自動的に以下の動きを行わせたい】
  1.qmail_1(MTA)のメールデータをpopで取得
  2.qmail_1(MTA)のメールデータをpopで取得
  3.qmail_1(MTA)とqmail_2(MTA)のデータを一元化する


3台あるのですか?
そのうち _1 と _2 の qmail から 後ろの qmail に relay するのではないのでしょうか?
それなら「spool は後ろの1台に格納される」ので,
qpopper は単に local 上の spool を見に行けばよいだけでしょう.

qmail は詳しくありませんが,
なんとなく根本的に間違っている気がしてます.

以上,ご参考までに.
anights
ぬし
会議室デビュー日: 2003/05/22
投稿数: 277
お住まい・勤務地: 東京
投稿日時: 2005-02-03 10:20
引用:

kazさんの書き込み (2005-02-02 17:44) より:
2つの MTA は「同じドメイン」の電子メールを受け取るのですか?
寡聞にして聴きませんが,qmail にそのような特殊機能があると思えません.



私は、ロードバランサが上にいてMTAレベルではないところで
2台にメールを振り分けているのかな?と思ってもみたのですが。

引用:

kazさんの書き込み (2005-02-02 17:44) より:
qpopper が2つの spool から電子メールコンテンツを引き出してくるのは
無理だと思います.
とりあえず自分は聞いたことがありません.


私も聞いたことがありません。

引用:

gankichiさんの書き込み (2005-02-02 11:37) より:
そこで、qpopperをpopデーモンとして、2台のサーバからpop経由でデータを取得し、
一元化を計ろうと思っております。



この表現からトータルは3台構成で
メールが配送される2台ではpop3デーモンを動かしておいて
残った1台でfetchmailなどを使って2台へメール取りに行く→1台にデータを集める
とか思ったのですがどうなんでしょう?
でこのfetchmailの部分に該当する手段はどんな方法がありますか?
って質問なのかと思ってみたのですが。

そういう意味であればkazさんの
引用:

kazさんの書き込み (2005-02-02 17:44) より:
3台あるのですか?
そのうち _1 と _2 の qmail から 後ろの qmail に relay するのではないのでしょうか?
それなら「spool は後ろの1台に格納される」ので,
qpopper は単に local 上の spool を見に行けばよいだけでしょう.


も一つの手ですよね。というか割と普通にある構成ですし。

ただ、2台でリレーではなく一旦受け取る(必要性があるか分かりませんけど)というなら
fetchmailで取ってくるとか、rsyncとかでデータ取ってくるとか
(2台のメール保存形式がMaildirなら難しくないし)ですかね?

ただ予想でしかないのでまったくの見当違いかもしれませんけど。
引用:

gankichiさんの書き込み (2005-02-02 11:37) より:
【自動的に以下の動きを行わせたい】
  1.qmail_1(MTA)のメールデータをpopで取得
  2.qmail_1(MTA)のメールデータをpopで取得
  3.qmail_1(MTA)とqmail_2(MTA)のデータを一元化する


私にはこのまとめでかえって意味分かりません
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2005-02-03 10:59
おはようございます.
引用:

anightsさんの書き込み (2005-02-03 10:20) より:
引用:

kazさんの書き込み (2005-02-02 17:44) より:
2つの MTA は「同じドメイン」の電子メールを受け取るのですか?
寡聞にして聴きませんが,qmail にそのような特殊機能があると思えません.



私は、ロードバランサが上にいてMTAレベルではないところで
2台にメールを振り分けているのかな?と思ってもみたのですが。


その場合,結局 spool が分散するのでそれを同期させるか,
でなければ anights 様が後半で書かれているとおり,
fetchmail などのような機能が必要になるでしょうね.
引用:

引用:

gankichiさんの書き込み (2005-02-02 11:37) より:
そこで、qpopperをpopデーモンとして、2台のサーバからpop経由でデータを取得し、
一元化を計ろうと思っております。



この表現からトータルは3台構成で
メールが配送される2台ではpop3デーモンを動かしておいて
残った1台でfetchmailなどを使って2台へメール取りに行く→1台にデータを集める
とか思ったのですがどうなんでしょう?
でこのfetchmailの部分に該当する手段はどんな方法がありますか?
って質問なのかと思ってみたのですが。


自分もそう考えたことがありますが,
fetchmail を「全ての user で使う」ことを検討したときに
この考えを捨てざるを得ませんでした.

ちなみに fetchmail を全ての user account のために動かす事って出来るのでしょうか?
つまり,個別の設定でなく,E_Mail Server で global な設定として...
仕組みから言って「無い」と踏んでますが,逃げ道があればご教示いただきたいです.
引用:


ただ、2台でリレーではなく一旦受け取る(必要性があるか分かりませんけど)というなら
fetchmailで取ってくるとか、rsyncとかでデータ取ってくるとか
(2台のメール保存形式がMaildirなら難しくないし)ですかね?


たしかに rsync という話もあり得るかも知れませんが,
※mailbox では NG なのは当然でしょうね.
Maildir なら「問題ない」のでしょうか?
「危険がない」のが「仕様上確実」な情報だと非常に有益な情報なのです.
それと,前部の MTA 側の host で NFS して後部に溜めるのも,
一つの手かな?とも思いました.
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2005-02-03 12:44
楽なのはNFSに共用のMaildirを置く案でしょうね。

rsync はどうかというと...
そのままだとあまりよろしくないと思います。
Maildir で、ちゃんとユニークなファイル名を付けて投げ込めば
「メールが消える」といった類のトラブルは生じないので
その点ではよいのですが、単純にミラーしてしまったのでは
処理の最中には Maildir/new/ に書き込み途中のファイルが
出来てしまいます。
MTA/MDAがMaildirへの配送の際にやっているように、
まず tmp/ に書き込んで、完了したら new/ へ移す、という
処理をやったほうがいいでしょう。
そのあたりを追加する方針でいいだろうと思います。

[ メッセージ編集済み 編集者: ぽんす 編集日時 2005-02-03 12:46 ]
綾瀬
ぬし
会議室デビュー日: 2002/07/31
投稿数: 393
お住まい・勤務地: どっちも3階
投稿日時: 2005-02-03 12:50
こんにちは。

今回の目的は

同一ドメイン宛の大量のメールを受ける必要があるので、とりあえず
早めに自社内に取り込めるように、MXレコードの優先順位を同じにした
2台のメールサーバを用意し分散させる。

で、双方で受け取ったメールをどちらか片方のサーバのpopperで扱いたい、
という認識でで良いでしょうか。

メールデータ自体の冗長化等は考えていないのですよね?
であれば、qmailが受け取ったメールをどこかに纏めれば良いと思うので、
構成的にすっきりするのは

3台目のメールサーバ(qmail_3)を後ろに用意する。
qmail_1及びqmail_2のsmtproutesでqmail_3に転送する。
popperはqmail_3を見に行く。(qmail_3でたてる?)

こんなんでどうでしょうか。


あるいはもっと単純に、qmail_2をセカンダリメールサーバのように
構築するのは如何でしょう。

qmail_1は普通にメールサーバとして構築する。
qmail_2のsmtproutesで、qmail_1に転送するように設定する。
MXレコードは2台とも優先順位を同じ。

これで、外部からは2台のサーバに分散されて届きますし、
受け取ったメールはqmail_1にまとめて保存されます。
popperはqmail_1だけを見に行けば良いことになります。


とりあえず自分ならこうやってしまうかなーという案です。


[ メッセージ編集済み 編集者: 綾瀬 編集日時 2005-02-03 12:58 ]
anights
ぬし
会議室デビュー日: 2003/05/22
投稿数: 277
お住まい・勤務地: 東京
投稿日時: 2005-02-03 12:53
引用:

kazさんの書き込み (2005-02-03 10:59) より:
自分もそう考えたことがありますが,
fetchmail を「全ての user で使う」ことを検討したときに
この考えを捨てざるを得ませんでした.
ちなみに fetchmail を全ての user account のために動かす事って出来るのでしょうか?
つまり,個別の設定でなく,E_Mail Server で global な設定として...
仕組みから言って「無い」と踏んでますが,逃げ道があればご教示いただきたいです.



メール取ってくるならfetchmailと安易な書き方をしてしまいました。すみません。
私が思ったのは、各ユーザで動かすというより代表ユーザで全部とってきて
メール内容で振り分けとかすればいけるのかなぁぐらいの認識です。
fetchmailは余り詳しくないので感覚ですが。。。
ただ、少なくとも一カ所に集めることは可能だと思いましたので挙げました。

引用:

たしかに rsync という話もあり得るかも知れませんが,
※mailbox では NG なのは当然でしょうね.
Maildir なら「問題ない」のでしょうか?
「危険がない」のが「仕様上確実」な情報だと非常に有益な情報なのです.
それと,前部の MTA 側の host で NFS して後部に溜めるのも,
一つの手かな?とも思いました.



「確実」とかすごまれると腰が引けてしまいますが
以下のようなことを考えてrsyncを挙げています。参考まで。

1.対象ファイルは、新着メール(~/Maildir/new/*)
2.Maildir/new配下に作成されたファイルはメールとして完了されている
3.メールファイルの命名規則からいってHOST名が違えば
 2つのサーバの~/Maildir/new/*を混ぜて置いても同一ファイル名は発生しない
4.よほど厳密に作られていない限りpop3デーモンは
 ~/Maildir/new/hogehogeファイルをメールとして扱う。
 ファイル名のチェックとか中身のチェックとかはしていない。(qmail-pop3dとか)
 つまり、2つのサーバのファイルが混じっていても等しく扱う。

rsyncを使う以上、タイムラグは当然アリなので
rsyncを実行するタイミングより1分前までのタイムスタンプを持つファイルを
転送対象とするとかすればより確実だと思います。
(rsync自体がそんなの必要ないというならそれはそれでOKですけど)

あと、includeとexcludeをキチっと考えないと
いけないのかもしれませんね。よくよく考えると面倒かも

集めた先でメールをユーザに公開すると~/Maildir/new/配下のファイルが
~/Maildir/cur/とかへ移動する場合が出てくるのでそこも注意ですかね。
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2005-02-03 13:27
引用:

anightsさんの書き込み (2005-02-03 12:53) より:

引用:

たしかに rsync という話もあり得るかも知れませんが,
※mailbox では NG なのは当然でしょうね.
Maildir なら「問題ない」のでしょうか?
「危険がない」のが「仕様上確実」な情報だと非常に有益な情報なのです.
それと,前部の MTA 側の host で NFS して後部に溜めるのも,
一つの手かな?とも思いました.



「確実」とかすごまれると腰が引けてしまいますが


あ,いえ,凄むと言うよりむしろご教示いただきたいのです.
NFS でやるにせよ,ほかの方法であれ,
後ろで「storage としての存在」なメールサーバがある場合,
この問題はつきまとってくると思いますので.
MTA が relay してくるだけなら気にならないでしょうけど,
「複数の MTA の spool」をひとつの法則で揃えるのは至難でしょうし,
かといって NFS その他がやってくれるわけでもナシ.
とすると,漠然と「同じ名前で書き込んだりする事ってあり得たりしないの?」
と思ったのです.
※というか GFS 使ってやってみたかったりしてます.

ときに,qoppper は Maildir に対応しているのでしょうか -> 皆様
或いは「patch で対応」な話?

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