- PR -

再配送のバランシング

1
投稿者投稿内容
clogic30
会議室デビュー日: 2008/03/01
投稿数: 4
投稿日時: 2008-03-01 11:15
私が運用に携わっているメールサーバの設定に関することでお尋ねしたいと思います。

現在、メールサーバA(postfix)に加えて再配送用サーバB(postfix)の二台が運用中です。
メールサーバAが持つ一部のdefer queueを、負荷分散のためサーバBが代わりに配送するという仕組みのようです。
運用資料によるとメールサーバの方は400番台のSMTPエラー番号を受け取った場合は自らが再配送を試みて、500番台のSMTPエラー番号を受け取った場合はサーバBに送るそうなのですが、これらの設定の記述はどこを参照すれば良いのでしょうか?

また、400番台のエラーはSMTPレベルのエラーで500番台はTCP/IPレベルのエラーを示唆するという理解でよろしいのでしょうか?

現在メールサーバを0から猛勉強しているところですが、googleや会議室の過去ログを
漁っても分からない部分については@IT会議室の先輩方のご協力を仰ぎたいと思っております。
今後ともどうぞよろしくお願い致します。
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2008-03-01 12:02
こんにちは。
私はpostfixに詳しくないので、その部分には言及しませんが、
引用:
メールサーバAが持つ一部のdefer queueを、負荷分散のためサーバBが代わりに配送するという仕組みのようです。

と判断された根拠はなんでしょうか? それとも、その通りの文面が資料にあったのでしょうか。

というのも、
引用:
運用資料によるとメールサーバの方は400番台のSMTPエラー番号を受け取った場合は自らが再配送を試みて、500番台のSMTPエラー番号を受け取った場合はサーバBに送る

とありますが、400番台と500番台ではそもそも処理すべき内容が違うのです。
処理の内容が異なるのであれば、A,Bで負荷分散ではなく、A,Bで機能分担と言う方が妥当でしょうから。
※垂直負荷分散という言い方ならアリでしょうか。

SMTP応答コードで検索すれば、色々情報が得られるかと思いますが、
 ・400番台
  一時的なエラー ( 例えば、高負荷状態で今は処理できないなど )
  送信側としては、後でリトライすることが想定される。
  ※リトライ期限/回数上限に達した場合はエラー処理に回りますが、それはまた別の話。
 ・500番台
  恒久的なエラー ( 例えば、対応するアカウントがないから今後も含めて受け付けられないなど )
  送信側としては、リトライせずにエラー処理に渡す。良くあるのは、envelope-fromのアドレスにエラーメールを返す。
という点で、決定的に違います。

また、SMTPレベルか、TCP/IPレベルか、という分類はあまり意味がありません。あくまで、エラー時に400番台・500番台のどちらを返すかは、サーバそれぞれの判断です。

[ メッセージ編集済み 編集者: angel 編集日時 2008-03-01 17:04 ]
anights
ぬし
会議室デビュー日: 2003/05/22
投稿数: 277
お住まい・勤務地: 東京
投稿日時: 2008-03-02 03:00
引用:

clogic30さんの書き込み (2008-03-01 11:15) より:
運用資料によるとメールサーバの方は400番台のSMTPエラー番号を受け取った場合は自らが再配送を試みて、500番台のSMTPエラー番号を受け取った場合はサーバBに送るそうなのですが、これらの設定の記述はどこを参照すれば良いのでしょうか?


すくなくともデフォルトの設定では無いと思われるので
# postconf -n
の結果から左辺に出てくる項の意味を調べればなにか分かるのでは?
_________________
桃李不言 下自成蹊
clogic30
会議室デビュー日: 2008/03/01
投稿数: 4
投稿日時: 2008-03-03 09:46
angelさん

はじめまして。
お返事ありがとうございました。

引用:
と判断された根拠はなんでしょうか? それとも、その通りの文面が資料にあったのでしょうか。


そういった資料があったわけではなく私の思い込み(サーバ名から受けた印象による)でした。
mail.logを念入りに調べた結果、実際はそういう仕様ではないという事が判明しました。
更に、「SMTP応答コード」で検索をかけた結果400番台と500番台のエラーの内容について私は間違った解釈を持っていた事に気がつきました。

結論としては、
400番台のエラーを受けたメールはサーバAのdefer queueより再配送を試みる。
500番台のエラーを受けたメールは再配送を試みない。送信元に対してエラーメールを返す。
サーバBは再配送用サーバではなく違う処理を行っていたようです。

大変勉強になりました。
どうもありがとうございました。
今後もどうぞよろしくお願いします。

-------------------------------------------------
anightsさん

はじめまして。
お返事ありがとうございました。

ご指摘いただいた通りmain.cfの各行の意味を調べてみました。

沢山あるため全てを調べることは出来なかったのですが、
今回の質問に関係してくる項目がfallback_relayという行であることが分かりました。

サーバAのfallback_relayはサーバBではなかったようです。
つまりサーバBは再配送用のサーバではないという事になります。

このmain.cfというファイルはpostfixの核になる設定ファイルであるようなので、
毎日少しずつ勉強するようにします。

どうもありがとうございました。
1

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