阅读视图

发现新文章,点击刷新页面。
🔲 ☆

丟失的表達欲

錢鍾書說我們常把自己的寫作衝動誤認為自己的寫作才能,我倒以為這很好,因為我自己連寫作的衝動都沒有了。不談寫作,只是隨便說點什麼亦鮮矣。博客有兩年沒有更新了,社交網絡經常好幾個月一言不發,也不怎麼與人聊天,越發自閉了。

這當然很不好。可是究竟要說點什麼呢,又感覺沒什麼好說的。我也試過寫點週記,談談一週見聞或所做之事,卻往往不見下一週。大抵因為下一週乏善可陳,於是不了了之。不然嘗試寫一下月記?

細細思索,這兩年是不是沒做什麼事呢?

不然。

  • 在開源項目上,我將 Authlib 的 JOSE 功能拆分出來生成了 joserfc 這個庫,斷斷續續已經發佈到了 1.2.2 版本。
  • 設計了一個 Sphinx 的主題 Shibuya,上面的 joserfc 的文檔就是用的這個主題。
  • Typlog 在重新設計 V4,目前自測中。

以前,我還會寫文章介紹一下我的項目。現在這些項目我竟沒有去介紹一下,想想真是不應該。

除了介紹自己的項目,還能寫點什麼呢?近來有什麼所思所想,又有什麼洞見或者觀察?似乎沒有。這大約就是所謂的咸魚人生吧。意識到了,似乎就應該翻一下身,來曬曬另一面。

🔲 ☆

個人域名郵箱免費方案

Cloudflare Email Routing 這項服務推出來有一段時間了。今日,我將個人郵箱 (me@lepture.com) 從 Google Workspace 轉到了 Cloudflare Email Routing,每月節省了 6 美金。

我們知道 Cloudflare Email Routing 可以接收郵件然後轉發到你指定的另一個郵箱,但是並不能發送郵件。這樣的話,我們就不能使用自己的個人域名郵箱了。所以要搭配一個方案,讓我們可以用自己的域名發郵件。所以我另外註冊了一個 Gmail 來發郵件。

下面是我遷移的整個流程:

備份郵件

首先我們需要備份個人域名郵箱里的郵件,如果你沒有什麼重要的郵件的話,也可以不備份。不過最好還是備份一下。這裡我選擇將郵件導入到我新註冊的 Gmail 里。如果你已經有一個 @gmail.com 的郵箱了,這一步可以省略。不過我還是註冊了一個全新的 Gmail,這樣比較清爽。

進入 Gmail 的設置裡面,選擇 Accounts and Import,在下面可以找到 Check mail from other accounts,點擊 Add a mail account。在彈出的對話框里輸入自己的郵箱,按照引導會進入填寫 POP 服務的頁面。

Sync emails
Add mail account

按照官方文檔,你需要填寫的信息:

  • 用戶名:你的郵箱
  • 密碼:你的郵箱密碼
  • POP 服務器:pop.gmail.com
  • 端口:995
  • 要求 SSL:是

Important

你也許無法成功添加郵箱賬戶。這裡可能會出現錯誤提示:

Server denied POP3 access for the given username and password.

我們需要先開啓個人域名郵箱(Google Workspace Gmail)里的 POP3 功能。到你的個人郵箱設置里,選擇 Forwarding and POP/IMAP,然後開啓 POP 服務。

Enable POP

但是可能還是無法成功,這是因為 Gmail 的安全機制導致的。雖然官方文檔里說密碼使用郵箱的登錄密碼就可以了,但其實不行。這裡有兩個解決方案:

  1. 使用 App password
  2. 修改賬戶安全等級

在下面的章節里會介紹如何創建 App password,這裡先介紹一下修改賬戶安全等級。因為我們這個 Google workspace 賬戶最終是要銷戶的,所以修改賬戶安全等級並沒有什麼影響。進入賬戶安全中心,激活 Less secure app access 即可。

Less secure app access

再次嘗試添加 POP 郵箱賬戶,應該就會成功了。你需要等待一段時間才能備份完所有郵件。也許睡一覺,明天再繼續?

開啓 Cloudflare Email Routing

當郵件備份完後就可以開啓 Cloudflare Email Routing 了。進入 Cloudflare,選擇你的域名,進入 Email Routing 設置。

Email Routing

比如你註冊的 Gmail 叫 example@gmail.com,你的個人域名郵箱是 me@example.com,上面的表單可以填寫:

  • Custom address: me
  • Destination: example@gmail.com

然後根據 Cloudflare 的提示,三步後就可以開啓 Cloudflare Email Routing 了。現在,當別人發郵件給 me@example.com 時,你的 example@gmail.com 郵箱就會收到郵件了。

個人域名發件人

最後我們需要讓發件人使用我們自己的域名。這一步與上面的備件郵件有些類似。進入 Gmail 的設置中心,選擇 Accounts and Import。在 Send mail as 里選擇添加一個新郵箱。

Send mail as

比如我添加自己的郵箱 me@lepture.com,根據提示一步一步走,會進入最後的 SMTP 服務器設置:

使用 AWS SES

Warning

如果你還沒有開通 AWS SES,建議試試其他 SMTP,比如 Alibaba Direct Mail。因為 AWS SES 默認為 sandbox 環境,需要申請才能開通生產環境,但是有可能申請不通過。

之前介紹的 Gmail SMTP 方案(在文章最下面)沒有 DKIM 驗證,會導致郵件進入垃圾箱。我們可以使用其他的 SMTP 服務來發送郵件。比如 AWS SES,因爲 SES 會提供每個月 3000 封免費郵件,這對於個人用戶來説絕對夠用了。

首先你需要注冊一個 AWS 賬戶,這裏就不介紹了。注冊後,到 SES Dashboard 裏面添加自己的域名,比如我的:

SES

下一步,設置 DNS,讓 SES 支持 DKIM 認證。你將需要設置類似如下的 CNAME。注意,在 Cloudflare 裏面設置 CNAME 時要關閉 Proxy

Setup DNS

接下來,我們為這個域名創建一個 SMTP 登錄賬戶:

Create SMTP credentials

只需要一步一步跟著 AWS 的步驟來,你就能創建出 SMTP 登錄賬戶和密碼。之後,再將這個 SMTP 賬戶登記到 Gmail 裏面就可以了。

Add AWS SES SMTP credentials

我們需要設置:

  1. SMTP Server: email-smtp.us-west-2.amazonaws.com
  2. Port: 465
  3. Username:AWS SMTP Username
  4. Password:AWS SMTP Password

完成後,可以在設置頁面里將個人域名郵箱設置為默認發件人。

另外,你還可以設置一下 MAIL FROM 域名,如果沒有設置的話,收件人會看到你發的郵件 mailed-by: us-west-2.amazonses.com

MAIL FROM

使用其他 SMTP

除了 AWS SES,還有其他 SMTP 服務選擇。比如 SendGrid,比如 Alibaba Direct Mail。

  • SendGrid 提供每天 100 封免費郵件。
  • Alibaba Direct Mail 每個阿里雲主帳戶每日可獲 200 封免費郵件發送額度。

測試

最後,我們使用自己的域名郵箱發送一封郵件試試。下面是我收到的測試郵件示例:

Received email

可以看到,SPF、DKIM 都成功了。


下面是使用 Gmail SMTP 的方案,請謹慎使用。

Warning

這個方案有缺陷,沒有 DKIM 認證,只能保證 SPF pass。

這裏我們可以直接使用當前的 Gmail 賬戶,比如 example@gmail.com

smtp.png

我們需要設置:

  1. SMTP Server: smtp.gmail.com
  2. Port: 587
  3. Username:你的 Gmail 郵箱(就是你當前在用的這個郵箱)
  4. Password:等一下,這裡需要創建一個 App password

在上面的最後一步需要填寫一個密碼,由於 Gmail 的安全機制,你不能直接填寫賬戶密碼,這裡需要使用一個 App password。

  1. 進入賬戶安全中心
  2. 激活兩步驗證(2-Step Verification):
2-Step Verification

激活後,進入 2-Step Verification,在頁面的最下面有一個 App passwords,進入後創建一個 Mail 的 App password 即可。

App passwords

然後在密碼填寫框里使用這個生成的密碼即可。完成後,可以在設置頁面里將個人域名郵箱設置為默認發件人。

🔲 ⭐

PyCon JP 2018 記

PyCon Japan 2018 剛剛結束。會議場地位於大田區,離我住處偏遠,於押上轉一趟車全程大抵一時半,倒不是怨言,整體感受挺不錯的。這次亦有在 PyCon 做一點分享,話題為 The Modern OAuth 2.0,正是最近在寫的《摩登 OAuth 2.0》系列。

分享

我自己偏愛概念類的分享,以傳播為主,這次的分享亦是順帶推廣自己的項目 Authlib。下面的視頻大抵從 15:00 開始,英語口語不好講話不太流利(國語口語也不好),但是還算講清楚了。

The modern OAuth 2.0

另外 slide 可見 SpeakerDeck

體驗

這次參加 PyCon JP 算是偶然,來日本第三年了才第一次參加。報名後才發現原來講者亦要買票的,這卻是第一次聽說,查了一下,一般 PyCon 確實都要買票,但是可以申請補助。

中途並沒有人來聯繫,也沒有提前要 slide,所以一直拖到演講前一天才寫完。也正是這一天,PyCon 開始前的一天,主辦方終於有一個活動了,邀請了工作人員、贊助商、講者去晚餐。餐廳有點搞笑,將 PyCon 寫成了 TyCon——Welcome TyCon 樣。人很多,沒有自我介紹,就瞎聊,日語不太會,只能找人講講英語,我又不太會社交,有點尷尬。不過好歹還認識了幾人。

Welcome TyCon

這次 PyCon JP 規模很大,除了早上的 Keynote 沒有並行外(住太遠趕上不 keynote),下午場的演講都是 6 個場次並行的,參會者可以自行挑選。當然,我只能挑選英文場的去聽了,可選擇項就少了。

收穫

PyCon JP 這邊有蠻多台灣 PyCon 過來的志願者,有好些人差不多每個地方的 PyCon 都會去,還挺驚奇的。跟台灣的朋友聊了聊,畢竟講國語比較輕鬆,決定明年去台灣宣傳一下。

我自己的分享結束後,亦收到了幾張名片,可惜我自己沒有印名片。有一位大約是想找我做點什麼,不過好像名片弄丟了,沒辦法聯繫了。還有一位馬爾代夫來的先生邀請我去給他們團隊做一個短期的培訓,看名片上的網址還帶 gov 難道是政府人員?倒是可以考慮一下,順便去度個假,得找個空閒時間。

感想

日本這邊辦得比中國要好。首先是議題,什麼樣的都有,有適合初學者聽的,有適合中高級聽的,有公司的有社區的,比較多樣。中國的看起來都是架構師,感覺像是 Summit(峰會),而不是 Conference,話題太過厚重。PyCon 還是要多元一些,要有對初學者友好的話題。

另外一點,PyCon JP 和其他地方的聯繫比較多,比如 PyCon 台灣、印尼、新加坡等,國際化比較好。問了一下在場的人,大家都沒聽過 PyCon 中國,以為中國沒有。正巧我分享完後有北京 PyCon 的人聯繫我(我沒有時間去),幫他要了 PyCon 日本、台灣、印尼的主席們的聯繫方式,希望 PyCon 中國能走出來與其他地方多多聯繫。

預祝十月的 PyCon 中國順利。

❌