Cyrus IMAPd

業務でCyrus IMAPdなんかと戯れている。

社内の業務で使っているExchange Serverが、お客さんのメールをバシバシBadMailに落とし、届かないという由々しき事態となっているので、捨てようという話で(笑)、代替環境を試験している。

しかし、pop3コネクタかExchange Serverの挙動は非常におかしい。

MIMEエンコードしてあるメールアドレスの名前部分をデコードしてから、メールアドレスとして正しいかを評価し、RFC違反だとしてBadMailフォルダに叩き落してくれる。しかも、それがpostmasterには通知されない。

喩えば、「(株)会社名<hoge@fuga.co.jp>」みたいなので、()内はメールアドレスではコメント扱いだが、( だけが削除されて、複数の変なアドレスに変換される。

これは、Outlookも変な仕様を継承していて、宛先などの行頭に ( が入っていると勝手に削除する。

()を全角にすり替えてやると通るのだろうが、そもそもSMTPでRFC違反にならないように、わざわざMIMEエンコードしているものを、なんでデコードした上に正しくないアドレスを創作して、評価するんだ?

「ユーザーは馬鹿だから、かしこいマイクロソフトが正しいRFCに準拠したアドレスに修正して、メールが不達になる最悪の事態を防ぎます」とでも言いたそうだな。

実際は、その蛇足のせいで、届いて当たり前のメールが届かなくなっているんだが、一体何を考えとるんだ?

MIMEデコードしているのは、恐らく、サーバーサイドのメールの振り分けの為だろうが、MIMEデコード前にメールアドレスが正しいのかをチェックして、それからMIMEデコードだろう。何でこんなクソな実装ができるのか理解に苦しむ…。

Cyrus IMAPdはさすがに軽くてパフォーマンスは良い感じ。しかし、sendmail、procmailと連携させるのに色々と調べないといけなかった。

古いドキュメントを見ると、色々と設定しなくてはいけないのだが、新しいsendmailになると、cyrus imapdとの連携が出来るようになっていて、sendmail.mcに2行書いて終わりとか簡単になっている。

procmailと連携させる場合だと、sendmail.mcはいじる必要が無く、/etc/procmailrcを作成すれば良いのだが、cyrus imapにメールを渡す時にヘッダ部にFrom: 以外のFromがあるとダメなので、formailで削除しておくとか、殆ど検索しても出てこないようなマイナーな設定をやらないといけないから苦労した。

余りコードをゴリゴリ書くような事は無く、殆ど設定弄って環境構築するシステムインテグレーションだから、楽でいいなあ。

“Cyrus IMAPd” への3件の返信

  1. 活躍してはりますな、師匠

    ワシも業務の片手間(というか、定常業務が不明確)に、ネットワーク関連の仕事をしちょります。

    しかし、下期から残業0時間が徹底され、早朝フレックスはもちろん、通常残業も出来ない状態で、稼ぎが悪くなってきました。
    まぁ、残業するほど仕事を貰っていないのが、現実なので仕方なかんべぇと思っちょります。

  2. めたやん久しぶり。

    わしは、メインがネットワーク関連、社内インフラ整備なので、改善し終えた時にどうなるやらって感じじゃよ。

    最近の風潮だと、人件費抑制で少ない人員で稼働率を上げる為に残業させるってパターンが多いけど、それが過労やら、精神的に追い詰められる原因になるから、残業時間0ってのは結構な事だと思うぞな。

    今行ってる会社は、カレンダー通りの週休2日だし、殆ど定時で帰っても問題無いので、ありがたい事ですじゃ。

  3. そうでんなぁ。

    まぁ、会社がコケることを考えると、経費削減は止む無きことかと思っちょります。

    ワシもHEにおった頃は、早出(7:00)〜終電なんてのが、平日・休日が続いておりましたゆえ、若かったなぁと懐かしんでおります。

    今の会社は残業0になる前は、残業しない奴は異端児扱いされて、ボロクソに言われてましたがな。
    それでも早出して20Hは残業しちょりましたから、そこそこ稼いでおりました。
    まぁ、カレンダーどおりに休めるのはありがたいことですじゃ。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください