2011/11/26

SendmailのキューID覚書き

``pAP2lEJm030284''のような文字列であるSendmailのキューIDは一見ランダムに生成されているようですが、コウモリ本によれば一定の規則によって生成されているとあります。Sendmailはキューを格納するファイルをディスクに作成するときにキューIDをファイル名(qf,df)に使用します。受信したメールがどこかでSendmailを経由している場合、ほぼ確実にキューIDがReceived:ヘッダに記録されているはずです。

キューIDの構造

現時点でSendmail 8.10より古いSendmailはそうそうないであろうと思いますので、V8.10以降のキューID構造についてのみ書きます。キューIDは``YMDhmsSEQpid''という構造で、

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvw

の60文字から位置が一致するものが使用されます。

  • Y = ( 年 - 1900 ) % 60 # 今年なら2011-1900を60で割った余り
  • M = 月, 1月は0,12月はB
  • D = 日, 10日はA, 20日はK
  • h = 時, 6時は6, 23時はN
  • m = 分, 0分は0, 49分はn
  • s = 秒, 16秒はG, 59秒はx
  • SEQ = 同じ秒数での順番
  • pid = プロセスID5桁

疑似的なキューID生成スクリプト

必要性はないでしょうが、熟練してくるとキューIDの先頭6文字で日時がわかります。下記はPerlで現在時刻からキューIDを生成する簡単なスクリプトです。

日本語版コウモリ本の第三版、492ページにキューIDについての解説が書かれています。

0 件のコメント:

コメントを投稿