這篇大概沒多少人看得懂, 所以可以跳過.
原本是不想寫太多跟工作有關的東西, 不過這幾天在做v1.9的release有太多感慨, 寫些無關緊要的算是舒緩身心.
nekobes-mac-pro:~ nekobe$ telnet mx.XXXXXX.com.tw 25
Trying XXX.XXX.XXX.XXX…
Connected to mx.XXXXXX.com.tw.
Escape character is ‘^]’.
220 mx02.XXXXXX.com.tw ESMTP Rmail v1.9 Gaghiel(v1.9p0072-beta)
Rmail v1.9大概是v1.x最後一個Release, v1.8 codes也正式開始不做maintain, 只會出security patch. 而v1.9對我更大的意義是, 正式跨出non-standard的範圍. 在v1.8之前, 我幾乎是攤著RFC在桌上, 一條一條都是照標準的方式去作, 只要是RFC或是已經有確定解法的功能, 都一律沿用, 包含.forward, aliases之類的都如是, 雖然這真的造成很多管理上的困擾, db/filesystem雙軌的管理方式很難如我的競爭者般做出很漂亮的介面.
但是身為一個「特化」過(特化不是指Customize, 而是Specialized)的MTA, 既然已經在超大量的環境下做出很多妥協, 例如非Normalize的查表, 全自訂與全即時的SQL builder, 那麼為了將來更多的features, 還是得跳出Standard的框框.
v1.9最大的改變是, 整個結構已經幾乎清掉了Postfix原始的樣貌; 在build-in的POP3D上新增很多將來開發Webmail時所需要的Functions; 把Forward/Aliases之類的功能完全轉移到資料庫去; 徹底獨立的API Daemon….等等, 雖然大體上還保留著原始filesystem的作業流程, 但是也規劃出了將來v2.0時要尋找的方向, 同時也能把不得不使用的local完全廢除, 改用不需要forking shell的virtual, 甚至會獨立寫一隻更快更精簡的final deliver以節省disk io.
雖然v1.9p0072-beta還是beta level的release, 但是框架都完成了, 正式的code freeze跟release build也會在這幾天, 或者說過年前正式完成. 而這個beta release也是v2.0的前哨, 用上了很多在v1.5階段還在實驗性質的演算法與流程, 雖然還沒有正式的benchmark, 但是我猜至少有5~10%的improve
.
剛剛都做完binary upgrade後, 在整理cvs跟diff時, 稍微wc -l了一下, 跟原始的版本相差了12萬行, 雖然行數不算什麼, 不過已經是Rmail從v0.2到v1.9以來最多的一個變更了. v2.0依舊會從Current Postfix出發, 這次要完全的把原先溝通的protocol完全重寫, 讓MX Layer能夠一次把所有information都查表完成然後embed在queue structure中, 後端完全淨化成storage engine, 類似Exchange 2008 Cluster的方式. 大概預計在Rmail v4誕生(假如會誕生的話啦….), Rmail就要完全脫離Postfix的架構了.
原本Rmail v2只存在於泡浴缸與睡前時的腦袋中, 藉由v1.9的Release, 終於可以描繪出v2的外框了.
自爽自賀! 拼命寫程式才會忘記現實雜事的煩擾.
另外, 出乎意料的, 知道v1.9 Codename 「Gaghiel」是什麼的人, 還出乎意料的多呢.