Patch to Publish::Maildir - Further Consideration(2)

続けて、実装についてにも多少記載します。下記は、前回のエントリと同一のものです。

  1. 各エントリのFrom:タグをconfig:にて設定可能とした(オプショナル)
  2. 各エントリに、Message-Id:タグを追加
  3. メールボックスに保持しているエントリ群のキャッシュ構築
  4. 削除済みメールボックスに保持しているエントリ群のキャッシュ構築(オプショナル)
  5. メールボックスに保持しているエントリ群の再配信/未読化の抑制(オプショナル)
  6. 削除済みメールボックスに保持しているエントリ群の再配信/未読化の抑制(オプショナル)

まずは1の、各エントリのFrom:タグをconifg:にて設定可能とした件にについてです。これはオプショナルとして動作するようにパッチを当てました。デフォルトは、plagger@localhostです。

このパッチを当てた際に用いていた環境は、過去のエントリで提示したものと比較しても、さらに複雑なものでした。

  +----------------------------+     +---------+
  | Plagger + Publish::Maildir | --> | Maildir |
  +----------------------------+     +---------+
                                          ^
                                          |
                                     +---------+
                                     | dovecot |
                                     +---------+
                                          |
                                          V
                                    +-----------+     +----------+
                                    | fetchmail | --> | procmail |
                                    +-----------+     +----------+
                                                           |
                                                           V
                                                      +---------+
                                                      | postfix |
                                                      +---------+
                                                           |
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
                                                           |
                                                           V
                                                        +------+     +-------+
                                                        | SMTP | --> | Gmail |
                                                        +------+     +-------+

Gmailに対してエントリを送付する点では、同様のことがPublish::Gmailでも出来ますので、冗長です。しかし、当時はFilter::BreakEntriesToFeedsが存在していなかったため*1、このような経路を構築していました。

なお、上記ダイアグラムでのSMTPとは、私が契約しているISPSMTPサーバです。Gmailtls経由での直接リレーを試した際に、クォータの制限を受けてしまったので、間に挟んでいました。

こちらは現在用いていない環境ですので、曖昧なのは否めませんが、Gmailに対して、From:タグにplagger@localhostを指定したメールをリレーした場合にスパム判定されることがあったのを嫌って当てたパッチであったように記憶しています*2


2として示した、各エントリに、Message-Id:タグを追加した経緯はさらに過去に遡ります。Emacs + WanderlustによるIMAP4環境では、Message-Id:タグがないメッセージに関しては、適切に取り扱ってくれないのが理由です。

このパッチを当てた時点では、4および6で示した、削除済みメールボックスに関する処理判定に用いる発想はありませんでした。また、このパッチはオプショナルではなく、常にエントリにMessage-Id:タグを含めるようパッチを当てています。

*1:間違えていたら済みません

*2:これを回避する別の方法は、多分に存在するかもしれません