2022年11月18日 星期五

如何同步 Outlook 2021/2019 與 Synology 的連絡人、行事曆、工作

Synology 行事曆自架Contacts與Calendar伺服器其實很簡單

2022/11 更新!! Synology不講武德! 再次更改各項服務URL與PORT,說明文件亦更新不全,多處說明均不相同,同步方法再度變更,還好,還是被小編挖出來了,請看 YouTube 影片示範


(以下為舊版資訊)

群輝科技的Synology NAS從兩千年開始發展至今,已經成為小型NAS的一個代名詞。尤其一般中小企業對於資料存儲的需求沒有這麼大的時候,需要的只是一個有延展性的桌上型NAS,Synology Diskstation就成為一個優質的選擇。畢竟大型企業的storage的選擇會是大型機架式的storage server。

後來,Diskstation將其單一的檔案伺服器功能延伸的更廣,讓私有雲端服務 (私有雲) 涵蓋到多媒體伺服器 (包括影音圖片)、協作平台伺服器 (包括郵件連絡人行事曆工作) 等等。Synology網站上提供各類伺服器的架設教學,例如: CalDAV ServerCardDAV ServerCloud Station ServerActive Directory Server多媒體伺服器VPN Server等等族繁不及備載。

協同作業 (Collaboration) 可提升公司生產力

這裡值得一提的是公司資源分享中除了檔案分享之外,Synology的CalDAV以及CardDAV讓同事之間的協同作業功力大增。也就是連絡人行事曆工作部分的同步與分享。這些原本在以前就只有Exchange Server以及Lotus Server才做得到的課題,Synology DSM讓公司老闆不用砸大錢就可以建置的伺服器功能得以實現。


現在問題來了,用戶端要如何才能在實質上做同步? 讓秘書可以幫老闆規劃行程? 讓代班同事在幾分鐘之內瞬懂工作進度? 讓員工不用分別在手機、平板、公司電腦、筆電上逐筆敲入公司同事連絡人資訊?

Synology提供了在不同裝置上做同步的教學:
但是,上面的教學只提到在iOS (iPhone & iPad)、AndroidMac OS XThunderbird上面做設定,沒有提到Outlook上面如何做同步,實際上,上面的URL及PORT在最新版本上也是錯誤的。

同步Synology行事曆到Outlook 2013-2021

小編花了一段時間尋找可以同步Synology mail server連絡人行事曆工作Outlook增益集 (Outlook Add-in),目前有幾個。有EVO Collaborator for Outlook、gsyncit、Outlook CalDAV Synchronizer等等。我挑了一個有中文介面的EVO Collaborator for Outlook做demo。讓大家可以更容易上手。

  1. EVO官網下載並安裝。
  2. 開啟Outlook。
  3. 點選上方EVO分頁。
  4. 點擊左手邊的設定帳戶
  5. 點選左下角的Profile #21
  6. 依照系統管理員提供的 Server nameIPportfolder值以及伺服器版本的不同,做不同的設定: 
    • 如果使用DSM版本伺服器:
      • 在CardDAV URL 欄位輸入:
        https://<server_name>:<port>/addressbooks/users/<username/addressbook/
      • 在CalDAV URL 欄位輸入:
        https://<server_name>:<port>/web/calendar/<calendar_folder>/
    • 如果使用Baikal版本伺服器:
      • 在右上角的主機名稱或IP位址輸入:
        https://<server_hostname_or_ip>:<port>/baikal/
  7. 輸入用戶端實際的帳號名稱密碼
  8. 點擊測試連線
  9. 測試成功之後,點擊儲存以及退出繼續後續同步。
結語: 如果公司是用Synology NAS網路硬碟,可以建議老闆把CardDAV跟CalDAV伺服器架起來。這樣子,同事們在每天工作上可以省更多時間,因為在手機上面新增、刪除、修改的連絡人、行事曆、工作都可以在幾秒鐘之內同步自己其他的行動裝置中、透過EVO Collaborator for Outlook同步到公司桌機、筆電裡面的Outlook 2007, 2010, 2013, 2016, 2019。這小小的伺服器配置可以讓員工宛如大型企業員工利用Exchange Server與他們所有的手機、平板、電腦等等同步連絡人、行事曆、工作。

其它種類 NAS: 

2022年11月17日 星期四

如何在 Outlook 設定自動轉發密件副本 (Auto BCC) 並密件副本自己

CC副本以及BCC密件副本轉發的差別?

大部分在公司企業的上班族對CC這個郵件相關名詞一定不陌生。例如下面這兩種狀況:
  1. 老闆或主管總是對下面的人說: 等等把會議內容CC給我、這個案子的相關資料CC給我。
  2. 剛進公司的菜鳥在郵件裏頭也會看到一封郵件的CC欄位裡面一長串的電子郵件信箱。
AUTOBCC
AUTO BCC outlook
這個CC到底是什麼呢? 其實也就是將郵件轉發副本,是英文 Carbon Copy 的縮寫。郵件轉發讓與案子或會議相關的同事們可以隨時了解進度。在必要的時候做跟進也能夠馬上進入狀況。

Outlook或其他郵件軟體大都會有一個讓使用者自行定義自動郵件轉發副本的規則清單 (rule)。如果郵件的內容或是收件人裡面包含某些關鍵字時,此封郵件會依照上述的規則清單將被轉發給清單中的電子郵件地址。

BCC密件副本

那BCC又是什麼? 它是Blind Carbon Copy的縮寫。就是指比如你收到一封信的時候你卻發現收件人沒有你的名字,那表示你是BCC收件人。這個功能呢,可能老闆或主管最愛用。他們想要了解某些專案的進度,但是又不想被專案相關人員知道自己有在跟進。因此,會囑咐秘書或是底下的主管要用BCC的方式將案子相關郵件用密件副本的方式轉給他們。

bandicam%202022-12-15%2009-52-23-254

但是,這課題對秘書或底下主管來說是一個頭痛的問題。不知道為何? 幾乎所有的郵件軟體包含Outlook及Thunderbird都沒有提供類似自動郵件轉發副本的功能來轉發密件副本。或許是洋人比較尊重隱私權?這個不得而知,但造成祕書或底下主管必須對每封與專案相關的郵件必須手動BCC

如何可以讓 Outlook 2021/Office 365 做自動郵件轉發密件副本 (BCC) 自己?

在Office365及Outlook 2010, 2013, 2016,2019 或 2021 底下,要做到自動郵件轉發密件副本大致上有兩種方法,一種是使用者自行編輯VBA程式碼,另外一種是安裝Outlook增益集 (Outlook Addin)。鑑於一般公司員工對VBA程式編碼都不熟悉,小編還是認為安裝Outlook增益集會是比較切實際的方法。(VBA程式碼附錄在最後)

在下面的範例,我們使用Power Toys for Outlook裡面的ABCC (Auto BCC) 功能來做自動郵件轉發密件副本: 1. 下載及安裝Power Toys for Outlook

auto_bcc_website

2. 開啟Outlook。 3. 在上方點擊Power Toys顯示選單 (Ribbon)

powertoy_ribbon

4. 點擊設定BCC規則。 5. 在自動以密件副本轉寄此郵件至清單中的電子郵件帳號底下的空白處輸入密件副本的收件人郵件帳號,也就是老闆或主管的電子郵件帳號。

autobcc_recipient

6. Power Toys for Outlook能夠過濾寄件者收件者主旨郵件主體附檔名稱中包含的指定關鍵字。在這五個欄位右手邊的空白欄位輸入關鍵字。為何拿這五個欄位做比較呢? 因為在郵件溝通中這五個欄位的內容會包括關鍵字的機率最高。關鍵字之間用半形的逗號 (,) 分隔。在比對方面的運算機制可以用下面幾種方法比對:

autobcc_condition

  • 寄件者比對方式: not set - 不做任何設定。 equals - 比對郵件寄件者欄位中的電子郵件帳號,如果與清單中的電子郵件帳號完全符合才執行轉寄。 not equals - 比對郵件寄件者欄位中的電子郵件帳號,如果與清單中的電子郵件帳號完全不符合才執行轉寄。 contains one of - 比對郵件寄件者欄位中的電子郵件帳號,如果符合清單中的任何一個帳號即執行轉寄。 contains none of - 比對郵件寄件者欄位中的電子郵件帳號,必須完全不包含清單中所有帳號才執行轉寄。
  • 收件者比對方式: not set - 不做任何設定。 contains one of - 比對郵件收件者欄位中的電子郵件帳號,如果符合清單中的任何一個帳號即執行轉寄。 contains none of - 比對郵件收件者欄位中的電子郵件帳號,必須完全不包含清單中所有帳號才執行轉寄。
  • 主旨 not set - 不做任何設定。 euqlas - 完整比對郵件主旨,必須主旨完全符合才執行轉寄。 not equals - 完整比對郵件主旨,必須主旨完全不符合才執行轉寄。 contains one of the keyword(s) - 完整比對郵件主旨,如果包含關鍵字列表中的任何一個,即會執行轉寄。 contains all of the keyword(s) - 完整比對郵件主旨,必須包含關鍵字列表中的所有關鍵字,才會執行轉寄。 contains none of the keyword(s) - 完整比對郵件主旨,必須不包含關鍵字列表中的所有關鍵字,才會執行轉寄。
  • 郵件主體 not set - 不做任何設定。 contains one of the keyword(s) - 完整比對郵件主體內容,如果包含關鍵字列表中的任何一個,即會執行轉寄。 contains all of the keyword(s) - 完整比對郵件主體內容,必須不包含關鍵字列表中的所有關鍵字,才會執行轉寄。
  • 附檔名稱 not set - 不做任何設定。 contains one of the keyword(s) - 完整比對附件檔案名稱,如果包含關鍵字列表中的任何一個,即會執行轉寄。 contains all of the keyword(s) - 完整比對附件檔案名稱,必須包含關鍵字列表中的所有關鍵字,才會執行轉寄。
7. 設定完畢之後,點擊儲存離開。 設定範例:

auto_bcc_example

另外提一下,這個Auto BCC Outlook增益集只對外寄郵件有效。對於新進郵件無法再將其自動進行轉寄。如果要做到將新進郵件做自動轉寄,可以透過在郵件伺服器的過濾機制來完成。例如EVO Mail Server裡面的Filtrolysis過濾機制就可以在郵件進來的時候,作轉寄的動作。

有了這個Outlook增益集之後,秘書以及主管可以不用擔心重要專案電子郵件漏轉發密件副本給老闆了,最後,我們還找了幾套其它的Auto BCC軟體,一併請朋友們參考看看: Extended  Office

使用C#程式碼做AutoBCC轉寄

如果你是專業的程式設計師且想要自己設計 Outlook Auto BCC 的外掛,Microsoft 提供了 Outlook Object Model 讓您可以使用 C# 進行設計,當然這樣可能還不夠,您還需要 Visual Studio 以及 VSTO 的知識才能完成,亦可能用VBA來完成。

VBA AUTO BCC 程式代碼

Private Sub Application_ItemSend(ByVal Item As Object, _
                                 Cancel As Boolean)
    Dim objRecip As Recipient
    Dim strMsg As String
    Dim res As Integer
    Dim strBcc As String
    On Error Resume Next
    strBcc = "address@url.com"

    Set objRecip = Item.Recipients.Add(strBcc)
    objRecip.Type = olBCC
    If Not objRecip.Resolve Then
        strMsg = "Could not resolve the Bcc recipient. " & _
                 "Do you want to send the message?"
        res = MsgBox(strMsg, vbYesNo + vbDefaultButton1, _
                "Could Not Resolve Bcc")
        If res = vbNo Then
            Cancel = True
        End If
    End If

    Set objRecip = Nothing
End Sub

您或許也感興趣:

如何在安卓電視上撥放照片幻燈片

2022年11月10日 星期四

如何透過CardDAV跟CalDAV URL與Synology聯絡人、行事曆、工作同步?

在2019年裡面,如何讓像Outlook的應用軟體同步Synology的聯絡人、行事曆、工作?

2022/11 更新!! 

Synology不講武德! 再次更改各項服務URL與PORT,說明文件亦更新不全,多處說明均不相同,同步方法再度變更,還好,還是被小編挖出來了,請看 YouTube 影片示範


synology_logo
Synology NAS
自從Synology在2011年9月7日宣布自家的DSM 3.2支援CardDAVCalDAV之後,很多論壇以及IT業界的Synology用戶們都躍躍欲試。但是,如果你在Synology官方社群裡面搜尋”caldav”這個關鍵字,長達80頁接近八年內的搜尋結果裡面,從DSM 3.2到6.2,看到大部分人都在詢問到底怎樣才能讓同步成功? 直到目前,真正能夠同步成功的僅有CardDAV聯絡人同步。因為很少人提問CardDAV同步的相關問題。 在2014年,小編撰寫一篇如何與Synology CalDAV跟CardDAV同步Outlook連絡人、行事曆、工作。在過去幾年裡面,Synology一直在很負責地更新自家的DSM到目前的6.2版本。四年多過去了,讓我們再次看看Synology NAS提供的CalDAV及CardDAV服務是否還可以用? 對了,如果你是Baikal用戶,要確定Baikal伺服器是否還可以在較新版本的DSM上面運行? 如果目前你的Baikal伺服器運行正常,則可以無視更新DSM版本。如果要做實驗,要確定你真的懂其中相關資料庫、php、apache等等的眉眉角角。在四年多前的文章裡面也有提到如何讓Outlook同步運行在Synology上面的Baikal伺服器。如果沒有看過,請翻一翻舊文章溫古知新。

過去曾經能用的同步工具

EVO Collaborator for Outlook從2014年開始支援與Synology同步聯絡人、行事曆、工作 之後,一些同類型的同步工具軟體也逐漸開始支援,例如: gSyncit。在過去幾年的某個舊DSM版本的時候,這些同步工具軟體都可以正常同步。 就目前來說,最新版本的gSyncit已經無法偵測伺服器URL,回傳一個(404) Not Found的錯誤信息。
gsyncit_synology_verify_fail
gSyncit 404 Not Found error
關於Synology的這個問題,小編寫信給EVO團隊提問,得到的回覆是: "就在今年初,我們一個用戶來信提問Outlook無法與Synology的CardDAV伺服器同步行事曆與工作。對於此問題,我們也實驗出來一樣的結果。所以我們針對此問題找出解決辦法以確保用戶可以同步。就在幾天前,這個問題已經解決。"

從Synology官方知識庫來的信息。。。

不知道在哪裡聽到這個說法? 如果一個軟體用戶提報一個問題,其實其背後有一千個用戶也同時會有一樣的問題。只是他們沒有提報罷了。 基於上述的說法以及在Synology官方社群論壇上面討論CalDAV無法同步的熱烈,實際上有很多Synology用戶都在等一個解決方案。哈囉,群暉科技! 快點醒過來解決問題吧! 根據Synology官方知識庫的教學 “如何將 Synology Calendar 與其他 CalDAV 用戶端同步?”,同步行事曆應該是很簡單的課題。同時,另外一篇” 如何使用 Synology NAS 架設行事曆伺服器”也提供設定CalDAV用戶端的步驟。如果你按照這些教學去實作,結果是不會成功的。
synology_webdav_calendar_package
Synology WebDAV & Calendar App
如果你查看Synology DSM介面,你會看到有兩個地方可以建立CalDAV分享URL。一個是在NAS內建的行事曆App:
synology_calendar_caldav%2Baccount
Calendar App裡面的CalDAV Account設定
另外一個則是在WebDAV app:
synology_webdav_add_calendar
WebDAV 新增行事曆
官方知識庫也有提到這兩個地方。就如上面所說的,實作是行不通的。 下面是官方知識庫對於內建行事曆App顯示Calendar URL的截圖:
calendar_generated_path_on_knowledge_base
內建行事曆產生的URL
下面是官方知識庫對於WebDAV URL顯示Calendar URL的截圖:
synology_webdav_generated_path_on_knowledge_base
WebDAV產生的URL

我們發現的真相是。。。

理論上,就同一個CardDAV帳號來說,內建行事曆App跟WebDAV App裡面的行事曆應該要一樣,不應該是分開的。不論你在哪裡存取行事曆資料,應該看到一樣的東西。 對於上述狀況,也許舊版DSM是正常的。但是目前已經不可考究。就現在的DSM 6.2來說,經過實驗證明,兩個App的行事曆是分開獨立的。同時,在找出解決辦法之後,我們確定WebDAV App的行事曆經過一些修正之後才可以提供同步之用。

解決問題,繼續同步

我們花了很多時間找出官方知識庫跟實作上面步驟的差別,並對其URL、路徑、主機名稱,連接埠等等作差異比較之後,我們在數個CalDAV用戶端軟體上面已經同步成功。 我們先列出完全可用的CalDAV URL。然後我們再將其與知識庫提供的URL作比較。下面是完全可用的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:
synology_calendar_caldav%2Baccount_path
Synology內建行事曆URL路徑
我們先把主機名稱擺一邊,直接比對上圖與實際可用的URL路徑。經過瀏覽Synology NAS的樹狀路經後,完全找不到圖中的caldav目錄名稱。也就是說,圖中的URL路徑是完全不可用的。就算可以用,也只能在行事曆App裡面有效,無法做同步之後。

WebDAV App提供的URL路徑:

synology_webdav_path_for_quickconnect
Synology WebDAV提供的URL路徑
synology_webdav_generated_path_on_knowledge_base
官方知識庫示範的CalDAVURL路徑
現在,我們來比對完全可用的URL、DSM 6.2上面實作產生的URL、官方知識庫提供的WebDAV URL路徑。同樣地,把主機名稱擺一邊。DSM 6.2的版本完全正確。但是,除非把鼠標停留在Location底下,否則根本不會出來。一般使用者沒有注意到的話,應該只會專注在KB上面的教學。再來,兩個WebDAV版本差別在於資料夾路徑。官方知識庫的路徑是:
  • /web/Calendar/Work
實作產生的路徑:
  • /homes/<user_account>/<calendar_folder>
比較之後發現路徑上的差異是造成使用者們無法同步Synology CalDAV服務主要原因。同步工具軟體們按照原先舊的/web/Calendar/<calendar_folder>自動偵測法則並無法偵測到新版的URL路徑。過去幾年中,舊版的路徑偵測都是可以用的,但是新版卻不可以,這只能說明群暉科技的官方知識庫的小編有點偷懶喔。

與Synology CardDAV服務同步

synology_carddav_service_icon
Synology DSM CardDAV 伺服器
在Synology NAS DSM上面CardDAV服務的設定很簡單。只有一個地方可以做連接埠的設定。
synology_carddav-service_UI
Synology CardDAV 設定介面

目前完全可用的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/
如果逐字比較,我們可以發現上面的URL格式跟先前2014年提供的EVO Collaborator for Outlook所用的格式一模一樣。在官方知識庫裡,只有兩頁提到如何做DSM裡面相關參數的設定。完全沒有針對iOS、macOS、Thunderbird、Outlook等等用戶端相關軟體的設定教學。這是蠻可惜的。

與Synology CardDAV伺服器同步的一些問題

狀況 #1

這是一個蠻有意思的狀況。大部分郵件軟體包含Thunderbird、Outlook、iOS Mail等等 ,裡面聯絡人的地址區塊把街道名、城市、區域、國家、郵遞區號等等儲存在各自的項目中,如下圖:
synology_outlook_original_address
Outlook聯絡人地址項目
但是,當聯絡人資料同步至Synology NAS以後,全部的項目都會被併至街道名項目裡面,如下圖:
synology_one_line_address
Synology地址合併為一行
當同步工具偵測上述的合併動作之後,會把這些變更同步回本地端的聯絡人。看官們可能會馬上瘋掉。為了避免悲劇的發生,絕對不要在Synology上面做任何修改動作。
synology_outlook_one_line_address_after%2Bsync
同步過後Outlook地址變成一行

狀況 #2

如果使用同步工具的郵件軟體是Outlook,在聯絡人的電話分類清單中,不要使用主要(Primary)類別來儲存電話號碼。
synology_issue_primary_phone_number
Outlook 電話 Primary
在另外一端的Synology NAS上面,不要使用TelephonePreferred兩種類別來儲存號碼。

synology_issue_telephone_preferred_number

在我們的實驗中,會發生下列諸多的問題: 1. 當Primary類別電話號碼被同步到Synology NAS以後,一開始會被分類到Telephone。如果在NAS上面修改這筆電話,後續的同步結束以後,該筆在Outlook上面的Primary類別電話號碼會消失。 2. 建立在Synology NAS上面Telephone類別電話號碼不會被同步到Outlook上面。 3. Preferred類別電話號碼是會被同步到Outlook上面,並且會以Primary類別存在。但是,該筆Primary類別電話號碼又會被同步回Synology上面並以Telephone類別項目的形式存在。這時候,#1的狀況又會再次發生並造成Primary電話號碼的消失。 4. 當Synology上面Telephone跟Preferred類別電話號碼都存在的狀況下,Preferred電話號碼照道理來說會跟Outlook上面的Primary電話號碼同步並一致。但是,實際狀況則是Preferred電話號碼會不見,Primary電話號碼又會被存入Telephone分類的電話號碼中。再來,又會回到#1的狀況。 上述的實驗最後會變成一種不會結束的迴圈。因此,為避免造成不必要的資料流失,不要使用這三個電話類別以及其他籠統名目的電話類別。

在不同軟體/平台上面與Synology CalDAV跟CardDAV同步

讓我們來看看是否同步工具軟體/插件是否能勝任在不同平台上面做同步的工作

Outlook與Synology CalDAV跟CardDAV同步

EVO Collaborator for Outlook可以經過一次設定就輕鬆做到同步CalDAV行事曆、工作 跟CardDAV聯絡人的課題。相容的平台是Outlook 20072010201320162019Office 365。下面是設定的步驟:
  1. 打開Outlook。
  2. 點擊Configure Profile(s)
  3. eco_config_profile
    Configure Profile(s)
  4. 典籍左下角的Profile #21
  5. eco_profile_21
    點擊Profile #21
  6. 在上方依照先前提供的格式輸入Synology NAS的主機名稱
    eco_server_hostname_url
    輸入伺服器主機名URL
    • 透過非SSL同步: https:/<server_hostname_or_ip>:8008
    • 透過SSL同步: https://<server_hostname_or_ip>:8443
  7. 輸入帳號密碼
    eco_enter_username_password
    輸入帳號及密碼
  8. 點擊下方的TEST之後,聯絡人、行事曆、工作的伺服器URL就會自動偵測並在URL空白欄為自動填入。

    eco_auto_discovery_result

    eco_click_test_and_apply_button_before_test
    點擊TEST按鈕
  9. 又,若是Synology上面有多個行事曆(日曆)或工作,點擊上一個步驟中URL右手邊的資料夾圖案即可從跳出來的視窗中選擇。
    eco_calendar_task_folder_list
    多行事曆清單
  10. 點擊下方的Apply儲存設定。

    eco_click_test_and_apply_button

注意事項:
  • 為了讓自動偵測能夠正常運作,所有非SSL或SSL使用的連接埠必須使用Synology提供的預設值:
    • CardDAV: 非SSL: 8008 / SSL: 8443
    • CalDAV: 非SSL: 5005 / SSL: 5006
  • 同時,在輸入主機名稱的時候,最後面的連接埠一定要輸入。非SSL需要輸入”:8008”。SSL需要輸入”:8443”。

    eco_port_8008_hostname

    eco_port_8443_hostname

  • 若是因為某些考量,CalDAV跟CardDAV的連接埠必須使用非預設值的連接埠號碼,則需要手動輸入URL。此時,將Server Hostname空間保留空白然後按照先前講到的URL規則在伺服器URL區塊來手動輸入URL。完成之後,同樣點擊TEST做測試,然後點擊Apply儲存設定。

    synology_eco_server_url_empty_configure_manually

macOS與Synology CalDAV跟CardDAV同步

一直以來,很多人macOS在建立CardDAV跟CalDAV帳戶的時候遇到” Unable to verify account name or password.”的問題。因為無法設定CalDAV帳戶,所以連同步都談不上。我google這個信息,找到很多答案,應該是跟伺服器憑證有關。 小編針對這個問題做了一個實驗供看官做參考。在這個實驗的下面三種狀況裡面,我嘗試在Mojve上面建立CardDAV跟CalDAV帳號:
  1. Synology上面有預設Synology自己簽署(Self-signed)的憑證。
  2. 在Synology上面匯入第三方自己簽署的憑證。
  3. 在Synology上面匯入CA簽署的憑證。
在第一個跟第二個狀況裡面嘗試建立帳戶的時候,不論是透過手動或是進階模式,大多數機會都會出現上面這個無法驗證帳戶名跟密碼的信息。但是在第三個狀況,透過進階模式,每次建立帳戶都可以成功。 然而在測試第一種跟第二種狀況的時候,偶而有一個信息跳出來”Internet Accounts (System Preferences) can’t verify the identity of the server “junkyard2019.ddns.net””。我就聯想到如果讓自己簽署的憑證在macOS底下永遠受信任,應該就沒有問題了。我嘗試了,也成功了。只要把憑證匯入macOS底下並永遠信任它,不論哪一種狀況下建立CardDAV跟CalDAV帳號都沒有問題。 現在,我來總結一下在建立DAV帳戶之前有哪些步驟要先做?
  1. 如果要使用Synology自己簽署的憑證,將該憑證匯出至macOS。
    • 在Synology NAS底下把憑證匯出到一個crt憑證檔案。
      01_export_self_sign_cert
      匯出crt憑證檔案
    • 將此crt憑證檔案在macOS匯入。
      02_import_self_sign_to_macos
      在macOS匯入剛剛匯出的憑證
    • Keychain Access裡面左下角的Certificate設定中選取該憑證下拉選單的Get Info,點擊並展開Trust,然後在下拉選單中選擇Always Trust
      03_get_info_on_cert
      點擊憑證帶出選單並點擊Get Info
      04_make_cert_always_trust
      點擊Always Trust取代系統預設值
  2. 如果要使用現有CA簽署的憑證,將該憑證匯入至Synology。
    • 如果手上沒有CA簽署的憑證,可以按照此連接的教學取得。
    • 隨後,點擊Control Panel/Security
      06_control_panel_security
      Synology 的Control Panel / Security
    • 點擊Certificate分頁。
      07_certificate_tab
      Certificate分頁
    • 點擊Add
      08_add_new_certificate
      點擊Add然後Add a new certificate
    • 參考上面的截圖,點擊Add a new certificate然後Next
    • 點擊Import certificate然後Next
      09_import_certificate
      匯入憑證
    • 點擊Browse來瀏覽存放憑證檔案的資料夾。
      10_browse_ca_signed_cert
      瀏覽憑證檔案資料夾
    • 參考上面的截圖,分別匯入Private Key, CertificateIntermediate certificate,然後點擊OK
當上面的步驟完成之後,在先前Synology DSM的憑證分頁點擊Configure,將下拉選單中CA簽署或自己簽署的憑證指派給CardDAV ServerWebDAV Server
11_select_certificate_as_default_for_carddav_webdav
指派憑證給CardDAV/WebDAV伺服器
再來,繼續完成設定macOS的動作:
  1. 在macOS打開System Preferences / Internet Accoutns
    12_system_preference_internet_accounts
    macOS的System Preferences / Internet Accounts
  2. 點擊Add Other Account…:
    13_add_other_account_selection
    點擊Add Other Accounts...
    • 如要設定CardDAV帳號,點擊CardDAV account
    • 如要設定CalDAV帳號,點擊CalDAV account
  3. Account Type的下拉選單中選擇Advanced,然後輸入:
    14_advanced_account_type
    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: 保持打勾
      15_carddav_advanced_setting_demo
      CardDAV設定範例
      16_caldav_advanced_setting_demo
      CalDAV設定範例
      17_both_dav_accounts_added
      添加CardDAV跟CalDAV帳號完成
  4. 最後,點擊Sign In繼續登入。
下面為同步結果的截圖:
18_macos_address_book
macOS聯絡人同步結果
19_macos_calendar_sync_demo
macOS行事曆同結果

iOS (iPhone & iPad) 與Synology CalDAV跟CardDAV同步

在過去幾年,蘋果的iOS不論是iPhone或是iPad一直以來在CalDAVCardDAVExchange以及市面上其他同類型帳戶方面的建置以及同步是最合拍的。在下面的實驗裡面,我們測試安裝最新版本iOS 12.2iPhone XS。 之前,我不記得是哪個版本,好像是iOS 10或11,蘋果開始強制性地要求此類帳戶建置以、連線及同步必須透過SSL/TLS協議。我個人覺得這樣子比較好。畢竟不是每台伺服器都會安裝SSL憑證也不是每個人都要透過SSL連線。就目前的iOS 12.2,非SSL連線仍然行不通。 在CardDAV方面,當我輸入伺服器IP或主機名稱(無須輸入連接埠)、帳戶名、密碼之後,iOS非常迅速的偵測到伺服器URL。一下子就設定完畢。

iphone_carddav_summary

在CalDAV方面,由於iOS無法偵測到正確的伺服器URL,這裡需要調整一些參數才可以搞定:
  1. 在iPhone上面,點進 Settings/Password & Accounts。
    iphone_password_account
    iPhone的Settings / Passwords & Accounts
  2. 往下拉到Add Account並點進去。
    iphone_add_button
    iPhone的Add Account
  3. 點進Other。
    iphone_account_template_selection
    點進去Other
  4. 點進Add CalDAV Account。
    iphone_other_template_selection
    點擊Add CalDAV Account
  5. 在輸入伺服器主機名稱、帳戶名、密碼之後,點右上角的Next。
    iphone_enter_server_username_password
    輸入伺服器、帳號、密碼
  6. 跳出”Cannot Connect Using SSL”時,點Cancel。然後再點OK繼續。
    iphone_caldav_unable_ssl_warning
    無法透過SSL連結
    iphone_caldav_cannot_verify
    無法確認帳戶資料
  7. 點在Advaned Settings。
    iphone_caldav_advanced_settings
    進入Advanced Settings做微調
  8. 照以前來說,iOS通常都能偵測到完整的CalDAV伺服器URL,然後不用再做任何設定即可順利建置帳號。針對Synology的CalDAV服務,這部分則沒有辦法做到。所以我們只能按照先前提到的URL生成手法來手動補上完整的伺服器URL。範例如下:
    • https://junkyard2019.ddns.net:5006/homes/junkadmin/appointment
      iphone_caldav_advanced_change_url
      修改Account URL
  9. 接下來點前一步驟截圖中左上角的< CalDAV
  10. 點右上角的Next繼續。
    iphone_next_top_right
    點擊右上角的Next
  11. 接下來會的頁面會出現完成建置才會有的打勾,然後下一個畫面中可以開啟或關閉行事曆或工作的選項。
    iphone_caldav_settings_verified
    CalDAV帳號設定完成,打勾表示確認
  12. 最後,點右上角的Save儲存設定。
    iphone_caldav_save_settings
    點在右上角Save儲存設定
只要透過一些微調,還是可以讓iOS裝置與Synology NAS同步聯絡人、行事曆、工作。

Thunderbird與Synology CalDAV跟CardDAV同步

在Thunderbird底下, Lightning插件可以用於同步Synology的CalDAV行事曆。設定步驟如下:
  1. 打開Thunderbird並確認是否已經更新到目前最新的60.5.3版。
    thunderbird_website_tw
    Thunderbird 官網
  2. 滑鼠右鍵點在行事曆區塊,然後點選New Calendar…
    synology_thunderbird_add_calendar_menu
    新行事曆選單
  3. 點擊On the Network選項,然後點擊Next
    synology_thunderbird_lightning_on_network
    添加行事曆 - On the Network
  4. 點擊Caldav並輸入按照先前提到的URL生成手法產生的伺服器URL,然後點擊Next
    • https://junkyard2019.ddns.net:5006/homes/junkadmin/appointment/
      synology_thunderbird_lightning_create_new_calendar
      點選CalDAV,輸入伺服器URL
  5. 輸入行事曆名稱還有點選電子郵件供會議邀請用途,然後點擊Next
    synology_thunderbird_lightning_name_calendar
    輸入行事曆名稱、輸入電子郵件地址供會議通知使用
  6. 在跳出來的Add Security Exception視窗裡面,點擊Confirm Security Exception
    synology_thunderbird_lightning_confirm_certificate
    確認憑證例外
  7. 此時,在新建立的行事曆上面點擊滑鼠右鍵,在下拉選單中,點選Synchronize做同步。
    synology_thunderbird_click_on_synchronize_calendar
    點擊Synchronize Calendars
  8. 在跳出來的Authentication Required的視窗裡面,輸入帳戶名密碼,然後點擊OK
    synology_thunderbird_lightning_enter_username_password
    輸入帳戶名、密碼做認證
  9. 點擊Finish完成設定。 
    synology_thunderbird_lightning_complete
    行事曆設定結束
  10. 最後,同步完成。
    synology_thunderbird_lightning_sync_complete
    行事曆同步完成
在CardDAV方面,SOGo connector for Thunderbird可以拿來同步Synology的CardDAV聯絡人。設定步驟如下:
  1. 打開Thunderbird並確認SOGo connector for Thunderbird已經安裝。在SOGo connector官網點擊下面畫面圈起來的60.0.2完成下載的動作。
    synology_thunderbird_sogo_connector_download
    下載SOGo Connector for Thunderbird
  2. 在Thunderbird裡面打開Address Book
    synology_thunderbird_sogo_connector_addressbook_button
    打開Address Book
  3. 點擊左上角File然後New -> Remote Address Book
    synology_thunderbird_sogo_connector_remote_address_book
    打開 File / New / Remote Address Book
  4. 在跳出來的視窗裡面,輸入連絡簿名稱並輸入按照先前提到的URL生成手法產生的伺服器URL,然後點擊OK
    • https://junkyard2019.ddns.net:8443/addressbooks/users/junkadmin/addressbook/
      synology_thunderbird_sogo_connector_enter_url_info
      輸入行事曆名稱以及伺服器URL
  5. 在跳出來的Add Security Exception視窗裡面,點擊Confirm Security Exception
    synology_thunderbird_sogo_connector_confirm_ssl
    確認憑證例外
  6. 此時,在新建立的連絡簿上面點擊滑鼠右鍵,在下拉選單中,點選Synchronize做同步。
    synology_thunderbird_sogo_connector_click_sync_button
    點選Address Book然後點擊Synchronize同步
  7. 在跳出來的Authentication Required的視窗裡面,輸入帳戶名密碼,然後點擊OK。
    synology_thunderbird_sogo_connector_enter_user_password
    輸入帳戶名、密碼做認證
  8. 最後,同步完成。
    synology_thunderbird_sogo_connector_sync_done
    聯絡人同步完成

關於Synology CalDAV跟CardDAV伺服器功能的一些小編感想

Synology提供小到個人、大到企業的NAS解決方案。當然啦,可以下載的一卡車模組化App真的有幫老闆省一筆錢,例如這個CalDAV跟CardDAV伺服器功能就可以免去再建置一台專職的伺服器。但是,我先前指出來的一些小問題例如: 行事曆app的行事曆資料夾跟WebDAV App裡面的行事曆資料夾無法整合、聯絡人裡面的地址區塊的錯亂、官方知識庫小編對於CalDAV伺服器URL小偷懶沒有做更新等等難免有點小困擾。扣除這些小問題,還是能夠透過小撇步還有修改URL格式進而達到讓用戶端同步的目的。其實。。。也不差啦~!