Mail Server 征服指南(一) 前言:寫給業餘愛好者

精選內容

相信很多跟我一樣熱愛 Linux 的業餘玩家,都有過類似的經歷:我們興致勃勃地從零開始,成功架設了自己的 Web Server(無論是 Apache 還是 Nginx),搞定了 HTTPS 憑證,甚至進階到自己架設 DNS 服務。看著這些服務在網路上跑起來,那種成就感是無可比擬的。

然而,在這條「自託管 (Self-hosting)」的路上,總有一座公認難以跨越的高山,那就是—— Mail Server

比起 Web Server,架設 Mail Server 的難度幾乎是指數級上升的。它不僅僅是安裝軟體那麼簡單,你還得面對繁瑣的設定檔、複雜的 DNS 驗證(SPF, DKIM, DMARC)、以及如何避免自己的信件被 Gmail 或 Outlook 歸類為垃圾郵件。我曾經無數次在設定檔的迷宮中打轉,或者看著 Log 檔裡的錯誤訊息感到挫折。

這正是我寫這系列文章的初衷。

我不希望這只是一篇充滿「複製貼上」指令的教學。這系列文章的目標,是幫助像我這樣非科班出身、但充滿熱情的 Linux 愛好者,不僅是「照著做」,更能真正理解 Mail Server 的運作原理與架構。

為了讓這套系統更具備實用性與靈活性,我們不會使用傳統的 Linux 系統帳號來收發信,而是挑戰業界標準的**「虛擬使用者 (Virtual Users)」**架構——利用 MariaDB (MySQL) 資料庫來管理我們的網域、使用者與別名。這意味著未來你要新增信箱、修改密碼、甚至是多網域託管,都只需要修改資料庫,而無需更動系統核心設定。

最後,做個小小的「行前提醒」:

這系列文章是特別寫給已經對 Linux 伺服器運作有一定概念的朋友。如果你已經親手架設過 Web Server、熟悉 DNS 解析原理,並且對 SSH 指令列操作感到自在,那麼你就是這篇文章的最佳讀者。為了讓教學更流暢,我們將跳過基礎的 Linux 操作說明(例如如何使用 vim/nano 編輯檔案、基本的檔案權限管理等),直接切入 Mail Server 的核心配置,讓你把寶貴的精力集中在攻克這個最艱難的挑戰上。

如果你準備好了,請跟著我一起開始這趟旅程。

第一章:架構規劃與環境準備

第二章:基礎建設篇——DNS、SSL 與資料庫

第三章:郵差的武裝——安裝 Postfix 並連接資料庫

第四章:安裝與設定 Dovecot (最後一塊拼圖)。

第五章:驗收時刻——全流程測試

第六章:設定 AWS SES Relay (讓信件使命必達)

小型伺器記憶體不足解決方案 –AWS EC2 伺服器設定swap交換空間

我自己喜歡架設各種網路服務供自己自娛自樂,在一台AWS EC2虛擬機上上架設了 Nextcloud, WordPress, Postfix, Dovecot, MariaDB, Nginx, 等等的服務。由於我的機器只有1GB的ram, 常常會碰到記憶體不足MariaDB資料庫崩潰的情況。這時如果設定好swap交換空間,就能大大降低服務中斷的情況。雖然使用硬碟當成swap會降低快取的效能,不過因為是自用,這點效能降低換取服務不中斷,還是很划算的!

首先,你要在EC2 頁面上新增個磁盤空間,大小就設定為記憶體的兩倍就好。像我就是設成2GB。 接下來請把這個新建好的空間掛載(attach)到你的伺服器上。這些設定都在EC2 的界面上就能操作完成,我就不多展示了。

這時用SSH連線進入你的純文字後台,輸入

lsblk

你就會看見你新增的磁區

NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS

nvme0n1     259:0    0    2G  0 disk
nvme1n1     259:1    0   15G  0 disk
└─nvme1n1p1 259:2    0   15G  0 part /

這是我的例子,其中nvme0n1就是我新增要用作SWAP的磁區。這時請輸入

sudo mkswap /dev/nvme0n1

其中nvme0n1請代換成你新增磁區的代號

然後再輸入

sudo swapon /dev/nvme0n1

如果這時你用 lsblk 看到

NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS

nvme0n1     259:0    0    2G  0 disk [SWAP]

在MOUNTPOINTS 有看到[SWAP] 就表示你已經將新增的磁區掛載上了。

此時你可以用 top 指令來看看是否swap有在運作

top

如果你看到下面這一行就代表成功了

MiB Swap:   2048.0 total,   2030.5 free,     17.5 used.    235.1 avail Mem

其中total 前面要顯示你新掛載磁區的大小才是正確的,掛載失敗total會顯示0

最後你要將開機就掛載設定好。

這時最好使用UUID 來掛載磁區,請用以下指令來查你剛掛上的磁區的UUID

sudo blkid

找到你剛掛上的磁區的UUID

接著請輸入

sudo nano /etc/fstab

並新增下面這一行

UUID=”YOURUUIDHERE” none swap sw 0 0

Ctrl + X 存檔。

這裡記得把雙引號中間的字串改成你自己的UUID,不然每次重開機都會出問題。

純IPv6伺服器如何與純IPv4伺服器建立連線

今年(2024)早些時候,Amazon AWS開始對所有的固定IP (IPv4)收費,一個月一個IP 要收$6,比我用的Amazon  Elastic Compute Cloud (EC2)都貴了。由於我只是架設私人使用的一些雲端服務,這筆費用能省就省。為了能完全擺脫IPv4,著實花了不少時間修改設定,包含DNS、強制EC2不獲取 public IPv4 (是的,就算是系統指派給你的外部IP,只要是public IPv4,都是要收費的…)等等,

但是其中最頭痛的當屬如何讓我的伺服器能與純IPv4的伺服器溝通。例如,wordpress的官網(wordpress.org)就只有IPv4,所以我的這個個人網站就無法連上wordpress官網進行更新了。在查了無數的資料後,我找到了一個解決方案:Public NAT64 service。這是一個由個人提供的DNS64 + NAT64服務。他的網站是

https://nat64.net

目前有一些大公司有提供DNS64服務,例如google,這服務能讓IPv6的伺服器能夠”找到/看到”純IPv4的伺服器。但是如果一個純IPv6的伺服器想與純IPv4的伺服器提供的服務建立連結,那就會需要NAT64。上面的網站提供了多個DNS64+NAT64 的服務位址,還是免費的!我試用了之後,發現不但Wordpress的更新正常了,這些DNS64+NAT64的名稱伺服器 (name server)也能用在一些對純IPv6伺服器不支援的服務上。例如Amazon Web Services (AWS) 提供的Amazon Simple Email Service (SES)。純IPv6的伺服器是無法與Amazon SES建立連結進而使用這項服務的。

以我自己的理解,DNS64服務可以幫助純IPv6伺服器查詢到純IPv4的位址 (一般DNS無法做到),NAT64則是能在得知這個IPv4位址後,與其建立連結,交換資訊。所以如果需要與只提供IPv4的伺服器建立連結 (例如瀏覽網頁),那這兩者缺一不可。如果想要了解更多信息,可以參考 https://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/nat-gateway-nat64-dns64.html

下面我把我的操作流程分享給大家,我用的是AWS的Ubuntu,所以會以這個舉例,如果你用的是其他服務,可能會有差異,不過重點就是指定你的伺服器使用上面這網站提供的DNS64+NAT64的名稱伺服器。

為了取代ubuntu原本的DNS設定,你要先到 /etc/netplan裡

cd /etc/netplan

我沒有任何檔案在這資料夾中,所以我要新增一個檔案

sudo vi 99-custom-dns.yaml

在檔案中寫入下面的內容:

network:
    version: 2
    ethernets:
        eth0:
            nameservers:
              addresses: [2a01:4f8:c2c:123f::1, 2a00:1098:2c::1]
            dhcp4-overrides:
                    use-dns: false

這裡的eth0是你的網卡代號,如果你只有一張網卡,大概也是eth0,不過請照你的實際情況修改。我這裡只放了兩個名稱伺服器,你想要多放也是可以的。

接下來請執行下面的指令來把這些設定寫入並覆蓋原本的DNS設定。

sudo netplan generate

這時請重啟你的服務器來讓設定生效

sudo reboot

這時可以用下面指令來查看設定是否生效,一樣記得把eth0改成你的網卡的代號

sudo resolvectl status eth0

如果你能找到像下面這樣的描述,就是成功了

Current DNS Server: 2a01:4f8:c2c:123f::1

最後要感謝一下網路上這些願意免費提供服務的好心人!

參考資料:

https://nat64.net

https://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/nat-gateway-nat64-dns64.html

https://repost.aws/knowledge-center/ec2-static-dns-ubuntu-debian

推薦雲端硬碟掛載軟體 ExpanDrive

好久沒有寫文章了。這次想要來推薦一款將雲端硬碟掛載並當做本地資料夾的軟體 ExpanDrive。

不知道有多少人跟我一樣,擁有不只一個雲端硬碟的帳號。我主要在用的有Google Drive和自己架設的Nextcloud。我原本只有一個現在學校提供的Google Drive 無限容量的空間,所以我用google 自家出的Backup & Sync 軟體來同步我的雲端空間到本地。最近成功大學開始提供畢業校友無限空間的Google Drive,我就開始遇到同步的問題了。

受限於Backup & Sync,我不能同時同步兩個帳號,所以就開始尋找可以同時同步兩個以上帳號的解決方案。我找到可以試用的兩大熱門雲端硬碟掛載軟體是NetDriveExpanDrive。 先來說說這類軟體共同的優點:

  1. 可以同時同步多個帳號:有些人可能需要同時同步同一家雲端硬碟的不同帳號,而通常這類服務供應商的軟體都只能讓你同時同步一個帳號,像我有兩個無限容量的Google Drive,一個是工作用,一個是放私人照片檔案。如果只用Backup & Sync 我就只能選擇其中一個帳號與本機同步,另一個帳號要透過瀏覽器來上傳與下載,很不方便。
  2. 不佔硬碟空間:尤其在台灣,現在很多學校都開始提供校友無限空間的Google Drive,這種情形下,我是很少刪檔案了,寧願把檔案放在雲端空間的某個角落就怕刪了後悔找不回來,這時候如果全部都要存在本機,會佔用很多的空間。家中的桌機還不一定有問題,如果想在筆電上也享受隨時存取的便利,這類軟體就非常有用了。
  3. 操作直覺:NetDrive 跟ExpanDrive都是將雲端硬碟當做外接硬碟一樣的掛載在電腦上,所以在存取檔案的時候,就跟在存取本地檔案一樣直覺,完全沒有學習曲線。

其實這類的軟體功能大同小異,可能在快取技術上各有自己的邏輯,不過對於使用者來說未必能感覺出來。另外因為這類軟體幾乎都是只同步檔案列表,當你真的要開啟某個檔案時才將該檔案下載到本地,所以多少都有點延遲。試用後我可能會使用ExpanDrive,下面列出我最後選擇ExpanDrive的原因,如果你需要下面兩個功能,那ExpanDrive是目前最好的選擇:

  1. 在所有功能類似的軟體中有著最強的跨平台能力:ExpanDrive可以在Windows, MacOS、和Linux上使用。同時支援三個平台的軟體是很少見的,因為要維護三種版本是很花資源的事,沒有對開源的Linux的愛,或是客群真的很大,我想很少公司會支援Linux版本。下面我截圖了三個平台上的ExpanDrive運作時的畫面(我三個平台都有在用),操作起來幾乎沒有區別,真的是非常強大了。
Windows 10
MacOS
Ubuntu 20.04

其中可以發現,Windows 10的中文支援是最差的 , 成大兩字顯示成兩個問號。

2. 選擇將特定檔案或資料夾存於本機(非快取,是下載至本機)。這個功能對我來說是非常有用的。我常常需要用Matlab等軟體來分析數據,每個要分析的檔案大小大約是數Mb。我會需要用程式批次處理(幾十到上百個檔案),而如果該檔案還沒被下載下來,整個分析數據的流程會被下載檔案這個動作拖慢。如果可以事先將要處理的檔案下載至本機,當要開始工作時就不會被下載檔案這件事搞的心情很差。雖然我很少剪片或處理相片,不過我相信這類工作如果能將檔案事先下載至本機都能讓工作更順暢。這個功能目前只在Windows 跟MacOS 上才有,我問過他們的客服,未來也會在Linux上實現這個功能。要實現本地存取也是非常簡單,就在右鍵的選單中就能直接操作,也可以反向操作(選擇不要本地存取)。下面是在MacOS 上的操作畫面,這功能在MacOS 上是最漂亮的,在資料夾或檔案的右下角會有一個大大的圖示告訴你這檔案目前的狀態。一朵雲表示檔案在雲端,一個綠色勾勾代表檔案被下載在本機了。Windows上則要在右鍵選單中確認檔案目前的狀態是在本機或是在雲端,希望他們能把MacOS 上的顯示方式搬到其他平台。

ExpanDrive只提供買斷的方式,一個授權是$49.95,終身免費升級再加$37.95。台灣我發現阿榮福利味居然有代理ExpanDrive,算一算比找官方買還便宜!而官方網站則是有提供七折的教育優惠。我覺得這類軟體是幾乎都會長期使用的,訂閱制是讓你還拿不定主意時用較低的價錢多試用一陣子,真的要用還是要買斷並買終身免費升級才划算。NetDrive 則提供訂閱一年$19.99,買斷則是$99。這樣算起來用超過五年訂閱就會比買斷還貴了。結論,試用後如果想買,直上買斷+終身免費升級最划算。如果你有發現更好用,或更便宜的決解方案,請留言給我建議,謝謝!

推薦筆記軟體 – Notion (二)

UPDATE: 感謝大家的愛護,我的推廣碼已經達到推薦上限,我已經無法拿到更多的試用額度了,我開放留言讓大家留下自己的推廣碼!另外現在Notion開放給學生教育工作者免費使用,所以我也不需要付錢使用了!

幾個月前我寫了一篇文章推薦Notion,當時只介紹了有關收集、編輯網路上找到的文章,以及這個軟體對於程式碼的友善。沒想到真的有人用我的推廣碼試用了這個軟體!很感動!在使用這個軟體的過程中,我也在網路上看了一些Youtuber介紹這個軟體。所以就想再多分享一些。如果你想試用Notion, 歡迎使用我的推廣碼可以使用留言裡的推廣碼(如果有的話), 你會得到10美金的試用額度,他會得到5美金。如果你完成Notion提供的一些小任務,還能得到另外26美金。Notion月費 $5,年費$48,所以這些獎勵相當於讓你免費使用全功能七個月左右。另外我會建議不急著把這$36 花掉,因為免費帳號已經可以試用絕大部份的功能了,等一定會用到付費功能再開始使用這$36。

首先我推薦下面這個youtuber的介紹,主要是介紹如何將Notion打造成一個個人的入口網站。

這是英文的介紹,可以順便練練聽力!如果聽不太懂也沒關係,看圖說故事也可以抓到很多重點!這個Youtuber甚至用Notion處理他的個人待辦事項,不過我覺得Todoist更適合做待辦事項軟體。而且他們針對學生以及教育工作者提供很高的折扣,值得一試!

下面這個圖是我在聽了這個youtuber介紹後自己建立的入口頁面。

我的美術天份不是很好,所以在顏色調配方面可能不太協調,我相信大家都能做出更美的入口頁面的!

接下來我要介紹一下一些細節,讓大家在做自己的入口頁面的時候可以少走一些彎路。有些也是參考其他人的做法的!

要做一個入口頁面,第一步就是建立一個空白的頁面。這個就是在最左邊的地方,private旁邊點那個加號就行了。

建立好後,可以在該頁面的最上面找到add cover選項,Notion 內建了非常多漂亮的圖片可以當你的封面,你也可以自己上傳自己的圖來當封面。如果這時候你已經有其他建立好的頁面,現在要整合進這個個人主頁,做法也很簡單,在右邊的private page那,將想要移動的頁面拖曳進這個剛建立好的頁面即可!跟你在你自己的電腦中移動資料夾一樣!

在封面的下面,是我自己放的一句金句來激厲自己,區塊的種類是”Quote”。這樣的文字會在最前面有的條直的粗線,代表這句話是直接引用於其他人的。接在Quote下面的就是我的Inbox了。這個是一個收集站,我在網路上用notion的外掛(插件)收集到的文章就是直接存到這個連結裡。點Inbox進去後就會看到一篇一篇的文章。如果你想要寫一些筆記,或是待辦事項,這個Inbox也可以是你所有想收集的資訊的第一站。等有時間的時候,再從你的Inbox裡面把東西歸到合適的資料夾中,一樣就是拖曳就行。

接下來就是如何讓所有的頁面排成你想要的結構。下面我自己錄了一段,看一下就知道一些小技巧,主要是如何建立兩列的目錄結構:

剩下的就是發揮大家的創意了!你可以嘗試各種排列,讓你的入口面頁賞心悅目!

利用免費的Google Cloud來建立私有雲(三)

更新:今天google 寄了一封信給用戶,從明年一月起,固定ip 要開始收費了。每個小時是0.004,這樣算起來就完全不划算了。我晚點會寫一篇教學文,教如何用 no-ip的服務來避免使用固定ip。

這是本系列的最後一篇文章,前面兩篇文章我整理了如何申請免費的Google Cloud伺服器,並用SSH連線進去。還有如何使用Snap來安裝Nextcloud。這篇文章要說的是如何讓自己的Nextcloud利用HTTPS安全連線來保護自己的服務和備份系統。用Snap安裝的Nexcloud要用HTTPS連線設定上非常簡單,只要先輸入下面這行指令確定Nextcloud服務是開啟的:

sudo snap start nextcloud

然後再輸入下面這行:

sudo nextcloud.enable-https lets-encrypt

系統會要求你輸入你的信箱做為日後出問題時的連絡方式,還有你想要設定HTTPS連線的網址。然後,就沒有然後了!這樣就設定完畢!現在你可以試試用https://開頭來連到你自己專屬的雲端硬碟了!

除了連線時的安全,你的資料的安全也很重要,誰都難保每一次系統更新都是順利的,也難保你哪天新血來潮想安裝什麼新軟體或服務,結果把電腦搞掛了。所以定期備份你的系統和資料也是很重要的。這點Google Cloud 也有很好的解決方案。在Computer Engine服務下,有一個快照的選項,裡面你可以建立快照排程,地區請選你的伺服器所在的地區,我建議快照位置選區域就夠了,如果你希望你的伺服器所在地區突然整個掛點的情況,你可以在其他區域馬上恢復你的服務,才選擇多地區,我想以自用來說,區域備份已經夠了。排程頻率要看你對還原的要求有多高,我自己是每天備份,並只留三天的備份。由於Google Cloud 的快照是差異備份,所以如果你的資料變動不大,每次備份的大小其實不會太大。另外要提醒的是,快照只有頭5 GB 是免費的,所以這部份是(幾乎)一定會被收取一些費用的,超過免費額度後每GB是美金0.026。所以如果你追求完全免費,大可以不做任何備份。

希望這系列的文章可以幫到一些人,如果有任何問題也歡迎跟我交流!

利用免費的Google Cloud來建立私有雲(二)

雖然不是必備,不過如果希望自己架設的私有雲可以比較安全,且透過一個網址被訪問,那一個網域名稱就很重要了!我自己是每年花$10美金買了一個網址,因為我有架設eMail server,這個需要許多進階的DNS服務,如果只是要架私有雲,那先找一個免費的網域名稱就可以了!我在電腦王阿達的網站上找到一個免費的選擇,大家可以參考一下,這種免費的通常限制都很多,可是如果只是私有雲的話,應該不會碰到什麼問題。有了網址,就可以將這個網址設定指向之前申請的固定IP,之後Nextcloud 的設定都可以使用你申請的網址。

有了網址以後,接下來就是要安裝Nextcloud了。這裡我建議直接用Nextcloud官方的snap 一鍵安裝。簡單到你的下巴會掉下來。

這個教學是按照這個網頁安裝的,請先修改下面兩個檔案,把電腦的hostname 設定好:

vim /etc/hosts

在這個檔案最前面加一行

123.123.123.123 your.domain.name  

請把數字的部份改成你自己的固定ip,your.domain. name改成你申請的domain name。接下來修改hostname這個檔案:

vim /etc/hostname

在最上面加上你的domain name。

執行下面這個指令來刷新hostname

hostname -F /etc/hostname

做完上面的動作,然後輸入下面三行指令:

sudo apt-get update
sudo apt install snapd
sudo snap install nextcloud

大功告成!現在你可以用你申請的網域名稱從瀏覽器進到你剛架好的Nextcloud 了。到這你可以開始設定你的root帳號,並且開始使用你的個人雲,Nextcloud幾乎在所有平台都有同步軟體,你可以像使用Dropbox一樣的使用它!用snap 安裝Nextcloud還有一個好處,每個服務都是由snap 直接控制,所以如果你要暫停或重新開始Nextcloud的服務,只需要用下面的命令:

sudo snap stop nextcloud #暫停
sudo snap start nextcloud # 開始

如果你想要更新Nextcloud到新的版本,也推薦使用snap 指令

sudo snap refresh nextcloud

但是!目前你架好的這個Nexcloud是用不安全的http連線,我建議要裝上certbot這個免費的https 加密服務來保護你的帳號密碼, 另外你還應該要讓系統每天自動幫你備份整個硬碟,以防你不小心把系統玩壞了,或是主硬碟無預警掛點。我會在下一篇文章教學這個部 份。

利用免費的Google Cloud來建立私有雲(一)

Google Cloud Platform 是與Amazon AWS相似的雲端虛擬伺服器的服務,相較於Amazon AWS是給予第一年免費運行一個小型伺服器(t2.micro: 0.5 vCPU, 1 GiB RAM)與30GB SSD硬碟的試用,Google cloud Platform則提供了一個微型伺服器(0.2 vCPU, 0.6 GiB RAM)與30GB 傳統硬碟永久免費。Google 還額外提供了第一年300美金的試用額度。相比之下Google的免費服務是比Amazon大方的。如果以建立個人私有雲的角度來說,Google的免費服務已經可以滿足大部份人的需要。有鑑於Dropbox限縮了免費使用者只能同步兩台裝置,我想是時候考慮自己弄一個個人雲了!

我最近將我的Nextcloud個人雲從Amazon AWS 轉到了Google Cloud Platform,參考了很多資料,下面我就整理一下,照著做可以少走些岔路。

由於Google Cloud Platform 在很多區域都有服務,所以第一件事情要注意的就是免費的服務只在下面幾個區域有:

  • 奧勒岡州:us-west1
  • 愛荷華州:us-central1
  • 南卡羅來納州:us-east1

你可能會發現所有的免費服務都在美國,所以如果你人在台灣的話,會有比較高的延遲。對於私有雲來說,延遲影響很小,所以關係不大。不過還是選比較靠近亞洲的奧勒岡州吧!詳細的永久免費方案請參考官網,中文的!

架設個人雲的第一步就是開一個新的 f1-micro VM 執行個體 ,並且將如何安全的透過SSH登入這個服務設定完成。請參考下面這些網頁,我照著做沒有碰到問題,記得用滿免費的30GB 空間!:

  1. 如何建立google cloud 服務
  2. 如何建立及登入執行個體

這裡我要提醒一下,由於第一年有免費300美金的試用額度,所以如果真的產生什麼費用,會先從這邊扣,在這一年內你可以觀察一下有沒有什麼服務持續向你收費的(這時只會扣你的免費額度)。我最常見到的狀況是Google Cloud Platform 幫你建立了一個系統的映像檔 ,而這個映像檔通常跟你建立的執行個體用到的硬碟空間一樣大(30GB),所以就一直收費了。建議到 Computer Engine –> 映像檔 找一下有沒有建立者是你自己的映像檔,刪掉就不會再產生費用了。另一個就是建議申請一個固定的IP 位址,這樣每次重開機就不會被強迫換IP了!申請的方法是點一下執行個體的名稱進入執行個體詳細資料頁面,點選你的網路介面的超連結,裡面就可以指定永久固定IP了。另外就是在使用個人雲的時候,流量產生的費用也可能會超過免費額度,不過除非你一天到晚從你的服務器下載東西,不然這個部份產生的費用幾乎可以不計。這篇文章的目的是取代免費的Dropbox,如果你是重度使用者(需要超過25GB使用空間),那我建議你選擇如Google Drive、Dropbox等產品。如果你充份的利用到所有你購買的空間,那這些網路硬碟產品比你自架服務器還便宜!

有了自己的伺服器,可以自己弄很多不同的服務,我自己就架設了eMail、Nextcloud、Wordpress、Full-Text RSS、Kindle-reader 等等。這些服務其實都可以找到免費或付費的替代品,可是有自己專屬的服務感覺還是滿好。這些服務中,eMail是最難搞的,除非你對郵件被Google看光光很不爽,不然不建議自己弄。Nextcloud個人雲是我覺得最值得自己架設的。當然如果你有Google 提供給學校的超大Google Cloud空間,那你就不會像我有動力自架個人雲了!

推薦筆記軟體 – Notion

UPDATE: 感謝大家的愛護,我的推廣碼已經達到推薦上限,我已經無法拿到更多的試用額度了,我開放留言讓大家留下自己的推廣碼!另外現在Notion開放給學生教育工作者免費使用,所以我也不需要付錢使用了!

我工作上會使用Matlab, LabView等等的程式來擷取、分析實驗數據,而我個人的愛好是架設各樣的網路服務(Nextcloud, WordPress, Roundcube, Full-Text RSS, Kindlereader)。當我在找一些技術性資料時,我習慣把找到的網頁放到Chrome瀏覽器的書籤列。久而久之,我的書籤列就爆滿,並且有了非常多的資料夾、子資料夾。有很多的網路資料是放在一些跟我一樣的個人網站,常常沒幾年就消失了。還有就是有時候我照著教學做卻發現有些錯誤的地方,也不能修改或自己加註。所以我就想要找一個筆記軟體來存放我找到的這些技術文件。

一開始我試了Onenote, 以及Evernote

Onenote

其中Onenote因為與微軟其它的辦公室軟體使用邏輯很像,所以用起來很容易上手。他的三層目錄結構也很符合我筆記還有待辨事項的整理邏輯。

https://products.office.com/en-us/onenote/digital-note-taking-app

可是,跟許多筆記軟體 (Evernote, Notion, Bear)不一樣的地方在於,Onenote是把一本筆記 (上圖最左邊的層級,最上層)存成一個檔案。這種筆記本之間分開,三層目錄結構,特別適合上課的筆記。一門課就是一本筆記本。把每次上課、每個主題的筆記與資料放在同一個第二層資料夾中,可以很容易的分類與搜尋。

可是正因為不同筆記本之間是分開的檔案,如果想要把一份下層分類的筆記頁面搬到另一本筆記中,是很麻煩的事。想像一個情況,我在網上找到一篇文章想要晚點找時間看,現在就想先把網頁擷取了放在我的inbox 筆記本中,晚點再決定這份文件屬於哪本筆記,這種邏輯在Onenote是行不通的。

Evernote

因為這個原因,我開始試用了大名鼎鼎的Evernote。針對Evernote的心得與應用在網路上有許多人有非常詳細的分享,我就不野人獻曝了。而如果你用的到付費版的Evernote的一些功能,例如搜尋影像內的文字 、搜尋 PDF 和 Office 文件內的文字 等等,那Evernote 目前為止還是最強的(這些Notion都還沒有)。這邊我只提出為何我後來放棄使用它的原因。

  • 免費版功能太少,由其是只能在兩台裝置間同步,無法在充份試用後再決定要不要付費。
  • 網頁版有兩種不同版本 (正式版與beta 版),而某一個功能可能只在其中一個版本上才有,所以常需要為了使用不同功能而切換版本。
  • 擷取功能不符合我的需要。詳細情況在介紹Notion時會說明。
  • 針對程式碼 (Matlab, Bash, Java, etc)的顯示與編輯不夠友善

如同我最前面提到的,我想找筆記軟體的最主要原因是想把一些網路上找到的技術文章存起來,並加上自己的註解,所以對網路文章中的程式碼的擷取、編輯與呈現就是我最在意的東西。其他我需要的功能隨便一個免費且陽春的筆記軟體(例如Apple 公司的Notes.app)都能做到

Notion

在寫這篇推薦文才發現這個軟體只有英文版。希望趕快出中文介面!

Notion 這個軟體的野心很大,他們是想要集合個人待辦事項,知識庫,專案管理、資料庫於一身。也因為這個原因,所以一開始上手要花一點時間,了解這個軟體管理資訊的架構。這裡我只專注在知識庫這一塊,因為我覺得個人待辦事項Todoist做的更好,專案管理也有很多其他強大的軟體(我不熟這塊就不班門弄斧了),Notion想要通吃沒那麼容易。

Notion管理內容的方式是 區塊 (block),所有的文字、照片、影片、都用區塊的概念。因為所有物件都被當做區塊,所以一頁筆記,或是筆記中的一段文字,都是區塊,你可以將一頁筆記移到不同的資料夾中,或是把一段文字調整成其他的類型的區塊(純文字、程式碼區塊等等)。

之前因為Notion沒有自己的網頁擷取套件,所以在收集網路資料上完全不是Evernote, Onenote的對手,今年他們出了自家的網頁擷取套件,並且照我的觀察他們是利用分析工具將網頁中有用的內容擷取出來,並改成他們自己的格式(也就是以區塊為核心的頁面編排格式)。這比較像是Fivefilter這種的網路文章全文擷取的概念,這樣的好處是擷取下來的文章,會自動幫你把是程式碼的部份設定成程式碼區塊,圖片則設成圖片區塊。不過這也不是沒有缺點的,有時候一些網站上特定格式的程式碼區塊會被這個擷取工具自動忽略,所以就沒有擷取到。但是Evernote的擷取工具也好不到哪,雖然Evernote的擷取工具有智慧選擇擷取範圍的功能,但是在某些網站可選擇的區域不是太大而把廣告也包含進去,就是太小而只有標題被選擇到。如果是像我一樣是想把網路上的技術文件擷取下來作日後的參考資料,我相信在提升網頁區塊的辨識能力後,Notion的網頁擷取技術將會是更好(最好)的工具。

再來就是程式碼的顯示與編輯。Notion針對不同的程式語言都有做最佳化,這方面是Evenote 與Onenote完全比不上的。這也是我最後選擇Notion的決定性因素。

Notion還有許多很好用的小功能,例如鎖住編輯功能防止誤刪,超多的待辦事項和專案管理模版可以直接套用等等。如果你看了這篇文章想要試用Notion,歡迎用我的推廣碼 ,你會得到10美金的試用額度,我會得到5美金。如果你完成Notion提供的一些小任務,還能得到另外26美金。Notion月費 $5,年費$48,所以這些獎勵相當於讓你免費使用全功能七個月左右。另外我會建議不急著把這$36 花掉,因為免費帳號已經可以試用絕大部份的功能了,等一定會用到付費功能再開始使用這$36。

ps. 免費版最大的限制是只能建立1000個區塊(每段文字、圖片或是資料夾是一個區塊)、單一附檔上限5MB、觀看筆記修改的歷史記錄。

Omnifocus, 2Do, Todoist 三款待辦事項軟體的比較 – Omnifocus 篇

自從讀了Get Things Done這本書後,我試著用了幾款不同的todo軟體,希望藉由GTD系統幫我處理生活工作的大小事其中用的最久的三款就是Omnifocus、2Do、Todoist。這幾款軟體各有各的好處,很多中英文網站都有介紹過。我想要從我的觀點來討論一下這三款軟體的優缺點。

 

先從比較早就被我淘汰的Omnifocus開始:Omnifocus 算是一款老字號的待辦事項軟體,我在Omnifocus 1的時候就已經接觸它,Omnifocus 2也買來用了,這款的優點就是功能強大,自訂性強。他們官方網站有詳細的說明書幫大家”快速”上手這款軟體。網路上也有很多進階的教學文,例如如何寫程式(applescript)來自動化一些工作流程還有網站提供各樣的佈景主題,讓整個軟體介面看起來更符合你的口味。

下面我列舉自己認為這款軟體被我淘汰的幾個原因:

1.  此軟體最早只在MacOS 上開發。最早Omnifocus只有for Mac版,後來才出了for iOS,最近正在完善for Web的版本。這也是我認為Omnifocus問題最大的地方。因為他們是先做了電腦版的軟體介面,所以整個程式是以如何在電腦這個介面下最好操作為考量來設計的,所以他們的for iOS版本,設計的概念就讓人感覺是用來輔助for Mac 版本。現在大家都是以手持裝置為主力的情況下,這樣的產品讓大多數的人用起來都不習慣。

2.   另一個大問題是他們目前只有for Mac 和 for iOS版本,所以Windows 電腦無法直接使用,直接把90% Windows電腦使用者排除在外。正在開發的Web版本也不知道要何年何月才會完工。以他們開發的速度,我認為一兩年內Web版不會完成。雖然他們目前有提供同時使用windows與Mac系統的人一些解決方案,但是我試過後非常不滿意(太複雜),相信大多數的使用者也會有同感。

3.  這個軟體不便宜,以目前他們更新版本的速度,大約是四到六年會要求使用者付費升級For Mac 版本有普通版和專業版兩種價格,要$39.99/$79.99,舊版升級要$19.99/$39.99。For iOS 版本也有普通版和專業版兩種價格,要$39.99/$59.99,舊版升級要$19.99/$29.99。未來For Web 正式上線也會需要額外付月費,我想價格也不會便宜。

4.  這個軟體的上手速度太慢,有很長的學習期。我自認是一個愛摸索軟體的人,可是Omnifocus花了我很多時間,我還是無法百分百發揮這個軟體的全部價值!讓我搞不清楚我是在玩這個軟體,還是真拿它當增加生產力的工具。

我認為Omnifocus適用的人群是:

  1. 一般生活與工作都是以 Apple產品為主力
  2. 主要處理待辦事項的工具是電腦
  3. 對於軟體自定性有執著,且願意花時間調校摸索

我相信99%的人都不屬於這種!