fetchmailエラー cannot get a range of message sizes
2005-08-20-4 / カテゴリ: [linux][command][POP3][メール] / [permlink]

ここ数日、メールが全く届かないからおかしいなぁと思っていたら(個人メールはなくても、ML と spam は届くはず...orz)、fetchmail がエラー吐いていた。(というか全然気づかんかった...)
$ fetchmail 
fetchmail: 185 通のメッセージがアカウント zaki@mail.example.org , サーバ mail.example.org 宛に届いています。 (933330 バイト)
fetchmail: cannot get a range of message sizes (1-100).
fetchmail: クライアント/サーバプロトコルエラーが mail.example.org よりメールを 受信している最中に発生しました。
fetchmail: Query status=4 (PROTOCOL)
んぎゃぁ。

で、調べてみると、
http://lists.ccil.org/pipermail/fetchmail-friends/2003-October/008061.html
> This is the log:
fetchmail: cannot get a range of message sizes (1-14).

i have added fetchsizelimit 0 for this account and now it works (wasn't
necessary with 6.2.4)
新しい Bug なのね。

というか
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=323027
これかなぁ。

まぁ、
$ fetchmail --version
:
  Fetch message size limit is 100 (--fetchsizelimit 100).
:
と(そんな設定はしていないのに)なってるんで、.fetchmailrc に
fetchsizelimit 0
追加しておけば、とりあえず fetch できた。


数日前に、友人から結婚します(未来形)のご報告メールが...

fetchmail と ssh ポートフォワードの併用(さらにapop)
2005-07-23-2 / カテゴリ: [linux][command][ssh][POP3][メール] / [permlink]

.fetchmailrcに
set postmaster zaki
set no bouncemail
set logfile $HOME/log/fetchmail.log

defaults
  flush
  fetchall
  no mimedecode
  no rewrite
  smtphost localhost

poll pop.example.org
  via localhost port 10110
  proto apop
  username 'username'
  preconnect "ssh -f -L 10110:pop.example.org:110 -i ~/.ssh/.id_rsa_nonpass zaki@pop.example.org sleep 15"
  password 'pop-passwd'

pop.example.org に ssh セッションを張って、ローカルへの 10110 アクセスを pop.example.org の 110 へフォワード。でもって、ローカルの 10110 へ apop で pop3 アクセス。sleep 15 は、retr が完了しきれる時間を考慮すること。

.id_rsa_nonpass はパスフレーズなしの ssh 秘密鍵。管理はしっかり!

APOP の実装
2005-07-17-5 / カテゴリ: [メール][POP3] / [permlink]

サーバの応答
hmiyazaki@MOZZARELLA:~$ telnet cheddar 110
Trying 192.168.1.1...
Connected to cheddar.
Escape character is '^]'.
+OK Qpopper (version 4.0.5) at cheddar starting.  <23361.1121585637@cheddar>
に対して、<23361.1121585637@cheddar> がチャレンジ。

で、ユーザ名が zaki, パスワードが passwd だとすると、必要なダイジェストは
<23361.1121585637@cheddar>passwd
の MD5 ハッシュ値となる。
この場合は
hmiyazaki@MOZZARELLA:~$ printf '<23361.1121585637@cheddar>passwd' | md5sum
98296f29bfa38c2a22cf886222956b6f *-
みたいな感じで。

んで、サーバへのリクエストは
APOP zaki 98296f29bfa38c2a22cf886222956b6f
で認証する。

Post Office Protocol - Version 3(RFC1939 日本語訳)
APOP命令を実装するPOP3サーバーは、その挨拶にタイムスタンプを含む。タイムスタンプの文法は[RFC822]の'msg-id'に相当し、 POP3サーバーが挨拶を発行する度に異ならなければならない(MUST)。例えば、POP3サーバーのインスタンス毎に別々のUNIXプロセスが使用されるUNIX実装において、タイムスタンプの文法は以下のようなもので良い。

    <process-ID.clock@hostname>

ここで'process-ID'はプロセスのPIDの10進値であり、clockはシステムクロックの10進値、hostnameはPOP3サーバーを実行中のホストに対応するFQDN(fully-qualified domain-name)である。

POP3クライアントはこのタイムスタンプに注目し、APOP命令を発行する。パラメータ'name'は、USER命令の'name'パラメータと同じ意味を持つ。パラメータ'digest'は、タイムスタンプ(鍵括弧を含む)の直後に共有されている秘密を付加した文字列に、MD5アルゴリズム [RFC1321]を適用して計算される。この共有されている秘密は、POP3クライアントとサーバーのみが知っている文字列である。その秘密の情報は、誰でもその名前のユーザーへのなりすましを許してしまう事になる為、認証されない公開を防ぐように十分な注意が必要である。'digest'パラメータ自身は、小文字のASCII文字を使った16進形式で送信される16オクテットの値である。
カテゴリ: POP3

最終更新時間: 2013-05-02 16:12