_ 6日になって今さら何をってな感じだが、まだ松の内だからいいよね。
_ 年末年始ダイジェスト。
_ 年末、風邪をひいて出鼻をくじかれた。しかも死んでて ATM があいてるうちに金をおろしそびれた。ふつーに生活する分には問題ないだけ手持ちはあってけど、どっかに遊びにいくには寂しい。
_ つーわけで、寝正月。夜が明けてから寝て夕方起きる。まともな生活に戻れない。どうしよう。
_ 正月休みボケのリハビリとして、 Life with qmailの 邦訳をアップデート。原文の日付は 2007/11/30 になってるけど、実際は12月の初旬か中旬ごろに更新された模様。いちばん大きな変更点は先日のライセンス変更にまつわる記述なのに、 更新履歴にはなぜかそれがない。ちなみに、LWQ 更新後の 12/28 に、qmail に続いて daemontools や ucspi-tcp もパブリックドメインになることが 宣言されたので、これに追従するためにそのうちまた更新されるかも。その他 djbdns もパブリックドメインになってるけど、ezmlm とか mess822 とか clockspeed とか現時点でまだライセンスが変わってないものも多いので注意。
_ LWQ は素の qmail ではなく netqmailのアンチョコなんだけど、その netqmail も 1.06 にバージョンが上がってる。といっても、これまでライセンスの関係でオリジナルの tar 玉 + パッチという形式での配布だったのが、パッチ適用済みの状態でアーカイブされるように変わっただけ。機能的な変更は一切ないので、あわてて入れ替える必要はない、っつーか、無駄。
_ で、こういうドキュメントを翻訳している当の本人が言うのもなんなんだけど、いいかげん qmail は(ry
_ ある程度 SMTP のきまりごとを知ってる人にはわかりきってることだけど。 いろんなメールアドレスからGmailに転送してる人への件。.exe を添付して送るとコケるのは gmail 特有の事情だけど、何らかの問題でコケた後に転送元ではなく送信元に返されるという現象は gmail にかぎったことじゃなくてどこでも同じ。これと異なる挙動が起きたら、そっちの方が間違ってる。
_ そう、間違ってる。そっちの方がありがたいとかうれしいとかの主観的な好みの問題ではなく、正しい間違ってるで明確に二分できるルールの問題。「エラーメールは転送元ではなく差出人に送る」。これがルール。
ホントはGmailの仕様が変わってくれれば嬉しい。Gmail の仕様ではない。Gmail のせいにするのはよろしくない。知らない人がとまどうのはしかたないとは思うけど、それでもあえて冷徹な言い方をするならば、SMTP の当然のルールを知らないで転送している人の自業自得。_ つーか、転送するときに「誰が転送したか」という情報は付加しないもんね。仮に Gmail が愚かにも仕様を変えたいと考えたとしても、そもそも誰が転送したかの情報がないから転送元にエラーを返すように変更するのは不可能。
_ じゃあ、どうすればいいか。かんたんなこと。通常の転送ではなく、差出人のアドレスを転送元アドレスに書き換えて新規のメールとして送り直せばいい。そうすればエラーは元の差出人ではなく、書き換え後の差出人(転送者)に届く。ループしないように注意な。
_ といっても、ふつーの ISP で envelope from を書き換えてから別アドレスに送り直すような設定ができるところなんかたぶんないけどな。
で、途中で止まると、サーバ側から見たときに全くメールが消えてないんです。これもサーバの仕様ではなく POP3 のプロトコル仕様。QUIT で正常にログアウトされたとき以外では DELE によるメール削除を実行してはいけない。逆に言えば、サーバから消したくないメールを間違えて消してしまっても、ログアウトする前に LAN ケーブルをひっこぬけばメールは消えない。
そこで、1,000件ずつ処理してみる。1,000件ごとにサーバにつなぎなおすわけですが、どうやらそのタイミングで1,000件が一気に削除されるようです(削除実行中に別なコマンドプロンプトからmail_count.rbを呼び出して調べた)。まあこの辺はメール鯖の仕様によって変わったりするのかも知れない。