如何讓Outlook跟Synology CardDAV/CalDAV URL同步行事曆、連絡人、工作?
在2019年裡面,如何讓像Outlook的郵件軟體同步Synology的聯絡人、行事曆、工作?
Synology NAS
於2011年9月7日, Synology的DSM 3.2開始支援CardDAV與CalDAV服務,眾多Synology NAS用戶們都想試試看卻不得其門而入。原因是? 小編在Synology官方社群裡面搜尋”caldav”這個關鍵字,有長達80頁的搜尋結果。發現直至目前最新的DSM 6.2,大部分人都想知道要如何設定才能同步成功? 幾天前,碰巧公司實驗室裡面也有一台Synology NAS,經過在不同平台上面的實驗,發現CalDAV真的怪怪的,反倒是CardDAV輕鬆設定就能做到同步。
在2014年,我家的EVO Collaborator for Outlook也開始支援與Synology NAS同步聯絡人、行事曆、工作。其他像gsyxxxt的同類型軟體也開始支援。一晃眼已經四年多 ,Synology已經從DSM 5.2更新到6.2。有客戶向我們反應無法跟Synology同步行事曆。我們把g牌最新版本也拿來試試看,果然有(404) Not Found的問題。
Synology Knowledge Base怎麼說?
剛剛上面提到很多人在論壇提問CalDAV為何無法同步? 總不可能用戶按照Synology Knowledge Base列出的方法也搞不定吧? 小編找到兩篇文章有提到同步教學
小編也來按照教學試試看! 答案是。。。。不成功!
按KB (Knowledge Base),Synology DSM裡面的行事曆App跟WebDAV Console可以產生CalDAV分享URL。但是教學裡面的Calendar URL的截圖是孑然不同。
下面是官方知識庫對於內建行事曆App顯示Calendar URL的截圖:
下面是官方知識庫對於WebDAV URL顯示Calendar URL的截圖:
為何官網教學搞不定?
一般來說,同樣使用CalDAV服務的同一Synology帳號的網頁版本行事曆跟WebDAV Console行事曆應該要一致。結果,不僅KB上面的路徑長得不一樣,連DSM 6.2的實驗都證明不一樣,兩邊的行事曆根本不通。向KB求救的用戶可能都錯亂了。
在KB上面的舊版教學在舊版DSM也許是正常的,因為四年前EVO Collaborator for Outlook是可以同步的。不過,經過R&D同事的努力,可以確定的是兩邊的URL都是錯的! 而且也確定只有WebDAV Console上面的行事曆URL必須經過修正才能提供同步之用。因為行事曆app上面的東西根本不搭嘎。
找出正確CalDAV路徑(URL)
在比較KB提供的教學跟我們實驗室實作中步驟還有兩者其URL、路徑、主機名稱,連接埠等等之後,我們已經搞定在附帶CalDAV同步的眾多郵件軟體上面同步。
這裡先提供驗證過可用的CalDAV URL:
- 非SSL: http://<server_hostname_or_ip>:port/homes/<user_account>/<calendar_folder>/
- SSL: https://<server_hostname_or_ip>:port/homes/<user_account>/<calendar_folder>/
將上面路徑套入我們實際使用的URL參數:
- 非SSL: http://junkyard2019.ddns.net:5005/homes/junkadmin/calendar/
- SSL: https://junkyard2019.ddns.net:5006/homes/junkadmin/calendar/
在DSM 6.2內建行事曆App 實作產生的URL:
各位可以把我們提供的可用路徑跟行事曆app做比較就知道長得完全不一樣。同時,/caldav/junkadmin的caldav資料夾在NAS上面根本找不到。
WebDAV App產生的URL路徑:
同樣地,把KB上面的WebDAV URL跟實際產生的URL跟我們提供可用的URL做比較,實際產生的跟我們找出的正確答案一模一樣,但是KB上面的URL在連接埠是正確的,但是資料夾卻天差地遠。KB的路徑是:
- /web/Calendar/Work
實作產生的路徑:
- /homes/<user_account>/<calendar_folder>
很明顯地,是URL的不同誤導用戶們的主因。也因為這樣,市面上的同步軟體因為沒有隨時追蹤Synology的資料夾異動仍然用過時的/web/Calendar/<calendar_folder>做自動偵測,所以失敗。我個人覺得群暉科技的KB更新有待加強。至於DSM 6.2實際產生的URL雖然是正確答案,但是眼睛不夠尖的人可能就一直在KB上面打轉繞不出來了。
與Synology CardDAV服務同步
小編覺得Synology在CardDAV服務方面的技術比較成熟,幾年前的帳號建立方法到現在還可以沿用。DSM上面可以設定的地方也只有修改連接埠。
目前完全可用的CardDAV URL:
- 非SSL: http://<server_hostname_or_ip>:port/addressbooks/users/<user_account>/addressbook/
- SSL: https://<server_hostname_or_ip>:port/addressbooks/users/<user_account>/addressbook/
雖然KB上面沒有可以參考的答案,不過經過R&D同事實驗的結果,URL格式跟EVO Collaborator for Outlook幾年前提供的路徑一樣。在這裡建議Synology KB小編,有空可以把在iOS、macOS、Thunderbird、Outlook這些軟體上面怎樣建立CardDAV帳號也寫一寫,免於忠實的Synology用戶到處找答案。
Synology CardDAV服務會發生的狀況,要注意!
- 幾乎所有郵件客戶端如:Thunderbird、Outlook、iOS Mail等等,它們連絡簿上面的地址都會把street、city、district、zip code、country等等分門別類的存專屬的區塊(field)。好比Outlook:
在聯絡簿一上傳到Synology CardDAV,所有的地址會被擠到street上面,
邏輯上,Synology上面既然有所變更,自然會同步下來用戶端。使用者估計看到自己的幾百上千筆聯絡人的地址被改得不像樣以後會發瘋! 為防範於未然,要嘛不要用Synology聯絡人同步,要嘛切記不要在Synology上面做聯絡人資訊的修改。 - 如果Outlook要跟Synology同步聯絡人,Outlook上面聯絡人電話分類部分絕對不要用 Primary類別存電話。
同時,Synology的聯絡人則是不要用Telephone跟Preferred存號碼。
在測試過程中,發現下面的問題:
- Primary號碼同步到Synology NAS後,會分辨為Telephone。若是修改NAS上面這筆電話, Outlook在下一輪的同步會把Primary號碼刪除。
- 所有Synology NAS上面的Telephone號碼不會同步到Outlook上面。
- Preferred號碼雖然會同步到Outlook,但是名目會變成Primary。然後這筆Primary號碼又會被上傳回Synology上面,名目會變成Telephone。接下來,第一種狀況再次出現,Primary號碼會消失。
- Synology上面Telephone跟Preferred號碼都存在時,Preferred號碼會像上面說的一樣同步到Outlook的Primary號碼。在下一輪同步以後, Preferred號碼會消失。然後,Primary號碼又會變成Telephone分類的號碼。接下來,你知道的,又會回到#1的狀況。
上面說的狀況會成為一種的迴圈模式。同樣地,為防範於未然,避免用這三種電話分類跟其他聽起來很一般的分類名目。
老師又來啦! 老師教大家怎樣跟Synology CalDAV跟CardDAV同步
我們來檢驗一下幾年下來還有哪些同步軟體可以同步?
Outlook與Synology CalDAV跟CardDAV同步
EVO Collaborator for Outlook經過這次的修正,在同步聯絡人、行事曆、工作方面還是能一次偵測到位。揪輕鬆。現在已經可以相容於Outlook 2007、2010、2013、2016、2019跟Office 365。設定的步驟如下:
- 打開Outlook。
- 點擊Configure Profile(s)
- 點擊Profile #21
- 在上方輸入Synology NAS的主機名稱,格式如下:
- 透過非SSL同步: https:/
:8008 - 透過SSL同步: https://
:8443 - 輸入帳號及密碼。
- 點擊下方的TEST之後,聯絡人、行事曆、工作的伺服器URL就會自動偵測並在URL空白欄為自動填入。
- 又,若是Synology上面有多個行事曆(日曆)或工作,點擊上一個步驟中URL右手邊的資料夾圖案即可從跳出來的視窗中選擇。
- 然後點擊下方的Apply儲存設定。
注意事項:
- 為了讓自動偵測能夠正常運作,所有非SSL或SSL使用的連接埠必須使用Synology提供的預設值:
- CardDAV: 非SSL: 8008 / SSL: 8443
- CalDAV: 非SSL: 5005 / SSL: 5006
- 同時,在輸入主機名稱的時候,最後面的連接埠一定要輸入。非SSL需要輸入” :8008”。SSL需要輸入” :8443”。
- 若是因為某些考量,CalDAV跟CardDAV的連接埠必須使用非預設值的連接埠號碼,則需要手動輸入URL。此時,將Server Hostname空間保留空白然後按照先前講到的URL規則在伺服器URL區塊來手動輸入URL。完成之後,同樣點擊TEST做測試,然後點擊Apply儲存設定。
macOS與Synology CalDAV跟CardDAV同步
一直以來,很多人macOS在建立CardDAV跟CalDAV帳戶的時候遇到” Unable to verify account name or password. ”的問題。因為無法設定CalDAV帳戶,所以連同步都談不上。只要google這個信息,很多搜尋結果指向應該跟伺服器憑證有關。
小編針對這個問題做了一個與伺服器憑證相關的實驗。在下面三種狀況裡面,我嘗試在Mojave上面建立CardDAV跟CalDAV帳號:
- Synology上面有預設Synology自己簽署(Self-signed)的憑證。
- 在Synology上面匯入第三方自己簽署的憑證。
- 在Synology上面匯入CA簽署的憑證。
在第一個跟第二個狀況裡面嘗試建立帳戶的時候,不論是透過手動或是進階模式,大多數機會都會出現上面這個無法驗證帳戶名跟密碼的信息。但是在第三個狀況,透過進階模式,每次建立帳戶都可以成功。
然而在測試第一種跟第二種狀況的時候,偶而有一個信息跳出來” Internet Accounts (System Preferences) can’t verify the identity of the server “junkyard2019.ddns.net” ”。我就聯想到如果讓自己簽署的憑證在macOS底下永遠受信任,應該就沒有問題了。我嘗試了,也成功了。只要把憑證匯入macOS底下並永遠信任它,不論哪一種狀況下建立CardDAV跟CalDAV帳號都沒有問題。
現在,我來總結一下在建立DAV帳戶之前有哪些步驟要先做?
如果要使用Synology自己簽署的憑證,將該憑證匯出至macOS。
- 在Synology NAS底下把憑證匯出到一個crt憑證檔案。
- 將此crt憑證檔案在macOS匯入。
- 在Keychain Access裡面左下角的Certificate設定中選取該憑證下拉選單的Get Info,點擊並展開Trust,然後在下拉選單中選擇Always Trust。
如果要使用現有CA簽署的憑證,將該憑證匯入至Synology。
- 如果手上沒有CA簽署的憑證,可以按照此連接的教學取得。
- 隨後,點擊Control Panel/Security。
- 點擊Certificate分頁。
- 點擊Add。
- 參考上面的截圖,點擊Add a new certificate然後Next。
- 點擊Import certificate然後Next。
- 點擊Browse來瀏覽存放憑證檔案的資料夾。
- 參考上面的截圖,分別匯入Private Key, Certificate跟Intermediate certificate,然後點擊OK。
當上面的步驟完成之後,在先前Synology DSM的憑證分頁點擊Configure,將下拉選單中CA簽署或自己簽署的憑證指派給CardDAV Server和WebDAV Server。
再來,繼續完成設定macOS的動作:
- 在macOS打開System Preferences / Internet Accoutns。
- 點擊Add Other Account…:
- 如要設定CardDAV帳號,點擊CardDAV account。
- 如要設定CalDAV帳號,點擊CalDAV account。
- 從Account Type的下拉選單中選擇Advanced,然後輸入:
- User Name, 範例: junkadmin
- Password, 範例: ********
- Server Address:
- 格式: server_host.domain.com
- 範例: junkyard2019.ddns.com
- Server Path:
- 如要設定CardDAV:
- 格式: /addressbooks/users/<username>/addressbook/
- 範例: /addressbooks/users/junkadmin/addressbook/
- 如要設定CalDAV:
- 格式: /homes/<username>/<calendar_folder>/
- 範例: /homes/junkadmin/appointment/
- Port:
- 8443 for CardDAV
- 5006 for CalDAV
- Use SSL: 保持打勾
- 最後,點擊Sign In繼續登入。
下面為同步結果的截圖:
iOS (iPhone & iPad) 與Synology CalDAV跟CardDAV同步
在過去幾年,蘋果的iOS不論是iPhone或是iPad一直以來在CalDAV、CardDAV、Exchange以及市面上其他同類型帳戶方面的建置以及同步是最合拍的。在下面的實驗裡面,我們測試安裝最新版本iOS 12.2的iPhone XS。 之前,我不記得是哪個版本,好像是iOS 10或11,蘋果開始強制性地要求此類帳戶建置、連線及同步必須透過SSL/TLS協議。我個人覺得這樣子比較好。畢竟不是每台伺服器都會安裝SSL憑證也不是每個人都要透過SSL連線。就目前的iOS 12.2,非SSL連線仍然行不通。
在CardDAV方面,當我輸入伺服器IP或主機名稱(無須輸入連接埠)、帳戶名、密碼之後,iOS非常迅速的偵測到伺服器URL。一下子就設定完畢。
在CalDAV方面,由於iOS無法偵測到正確的伺服器URL,這裡需要調整一些參數才可以搞定:
- 在iPhone上面,點進 Settings/Password & Accounts。
- 往下拉到Add Account並點進去。
- 點進Other。
- 點進Add CalDAV Account。
- 在輸入伺服器主機名稱、帳戶名、密碼之後,點右上角的Next。
- 跳出” Cannot Connect Using SSL”時,點Cancel。然後再點OK繼續。
- 點在Advaned Settings。
- 照以前來說,iOS通常都能偵測到完整的CalDAV伺服器URL,然後不用再做任何設定即可順利建置帳號。針對Synology的CalDAV服務,這部分則沒有辦法做到。所以我們只能按照先前提到的URL生成手法來手動補上完整的伺服器URL。範例如下:
- https://junkyard2019.ddns.net:5006/homes/junkadmin/appointment
- 接下來點前一步驟截圖中左上角的< CalDAV。
- 點右上角的Next繼續。
- 接下來會的頁面會出現完成建置才會有的打勾,然後下一個畫面中可以開啟或關閉行事曆或工作的選項。
- 最後,點右上角的Save儲存設定。
只要透過一些微調,還是可以讓iOS裝置與Synology NAS同步聯絡人、行事曆、工作。
Thunderbird與Synology CalDAV跟CardDAV同步
在Thunderbird底下, Lightning插件可以用於同步Synology的CalDAV行事曆。設定步驟如下:
- 打開Thunderbird並確認是否已經更新到目前最新的60.5.3版。
- 滑鼠右鍵點在行事曆區塊,然後點選New Calendar…。
- 點擊On the Network選項,然後點擊Next。
- 點擊Caldav並輸入按照先前提到的URL生成手法產生的伺服器URL,然後點擊Next
- https://junkyard2019.ddns.net:5006/homes/junkadmin/appointment/
- 輸入行事曆名稱還有點選電子郵件供會議邀請用途,然後點擊Next。
- 在跳出來的Add Security Exception視窗裡面,點擊Confirm Security Exception。
- 此時,在新建立的行事曆上面點擊滑鼠右鍵,在下拉選單中,點選Synchronize做同步。
- 在跳出來的Authentication Required的視窗裡面,輸入帳戶名及密碼,然後點擊OK。
- 點擊Finish完成設定。
- 最後,同步完成。
在CardDAV方面,SOGo connector for Thunderbird可以拿來同步Synology的CardDAV聯絡人。設定步驟如下:
- 打開Thunderbird並確認SOGo connector for Thunderbird已經安裝。在SOGo connector官網點擊下面畫面圈起來的60.0.2完成下載的動作。
- 在Thunderbird裡面打開Address Book。
- 點擊左上角File然後New -> Remote Address Book。
- 在跳出來的視窗裡面,輸入連絡簿名稱並輸入按照先前提到的URL生成手法產生的伺服器URL,然後點擊OK。
- https://junkyard2019.ddns.net:8443/addressbooks/users/junkadmin/addressbook/
- 在跳出來的Add Security Exception視窗裡面,點擊Confirm Security Exception。
- 此時,在新建立的連絡簿上面點擊滑鼠右鍵,在下拉選單中,點選Synchronize做同步。
- 在跳出來的Authentication Required的視窗裡面,輸入帳戶名及密碼,然後點擊OK。
- 最後,同步完成。
關於Synology CalDAV跟CardDAV伺服器功能的一些小編感想
沒有記錯的話,Synology上面也支援安裝第三方DAV伺服器,例如: Baikal Server。如果先前安裝的是Baikal伺服器,在DSM更新之前先google一下Baikal是否還可以用? 畢竟Baikal目前被SabreDAV團隊接過去營運,但是更新方面似乎沒有啥效率。若是目前Baikal伺服器運行正常,不見得一定要更新DSM。若是想實驗看看,要先去了解相關資料庫、php、apache等等的技術文件。這裡順便腦補一下在EVO Collaborator for Outlook 上面如何設定跟Baikal同步:
- 點選Profile #21。
- 在Server host name or IP address輸入:
- https://<server_hostname_or_ip>:<port>/baikal/
- 輸入帳號密碼。
- 點擊TEST通過驗證。
- 點擊Apply儲存設定。
Synology提供小到個人、大到企業的NAS解決方案。當然啦,可以下載的一卡車模組化App真的有幫老闆省一筆錢,例如這個CalDAV跟CardDAV伺服器功能就可以免去再建置一台專職的伺服器。但是,我先前指出來的一些小問題例如: 行事曆app的行事曆資料夾跟WebDAV App裡面的行事曆資料夾無法整合、聯絡人裡面的地址區塊的錯亂、官方知識庫小編對於CalDAV伺服器URL小偷懶沒有做更新等等難免有點小困擾。扣除這些小問題,還是能夠透過小撇步還有修改URL格式進而達到讓用戶端同步的目的。其實。。。也不差啦~!