iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 26
1
AI & Data

[BI工具] 以Redash為資料視覺化方案之選擇與實踐系列 第 26

[Redash] 設定 mail server (使用 Gmail)

  • 分享至 

  • xImage
  •  

在開啟使用者帳號的時候,如果沒有設定 mail server
就得直接寄邀請連結給對方(不然就是把網址貼上,用通訊軟體的方式轉傳給對方),
忘記密碼也是走同樣流程,或是請他本人走到管理者旁邊按下 Change password
這樣對管理者而言相對麻煩不少。

https://ithelp.ithome.com.tw/upload/images/20181103/20111638vhlLKC3lGK.png

設定 mail server 除了管理帳號方便,
之後再介紹的 Alert 功能時,也可以使用 email 通知。


啟動 Gmail 兩步驟驗證(會需要用到手機)

https://ithelp.ithome.com.tw/upload/images/20181103/20111638stu4uEuIJR.png

步驟過程會看到「立即試用」、「是」、「啟動」等訊息,就都點下去,
中間會需要填手機號碼,進行驗證,然後填寫手機收到的驗證碼,
最後成功畫面會如下:

https://ithelp.ithome.com.tw/upload/images/20181103/20111638IaysC5vsWU.png

設定 Gmail Applicaiton Password

「選取應用程式」選擇「其他(自訂名稱)」

https://ithelp.ithome.com.tw/upload/images/20181103/201116384G7fyVtEGn.png

填寫自訂的名稱(這裡填寫 Redash)

https://ithelp.ithome.com.tw/upload/images/20181103/20111638le4D4EAaAt.png

按下產生後會跳出 16 碼的密碼(請保存好,之後無法再出現)

https://ithelp.ithome.com.tw/upload/images/20181103/20111638MZbpYajgcL.png

這組密碼配合帳號就可以操作 Google 帳戶,
所以要保管好,不要讓他人知道


以 Python 進行測試設定狀態

因為 Redash 底層是用 Python 撰寫,
可以先用下方範例程式碼,來測試以上設定是否正常:

在 smtp.sendmail 第一個參數,這裡是no-reply@example.com代表的是寄件者,
不過實際上都會以你的你的google帳號@gmail.com來當成寄件者,
但還是必須要填,且要符合email帳號格式

vim test.py

import smtplib
smtp = smtplib.SMTP('smtp.gmail.com', 587)
smtp.ehlo()
smtp.starttls()
smtp.login('你的google帳號@gmail.com','剛拿到的16碼密碼不含任何符號')
smtp.sendmail('no-reply@example.com',
              '收件者信箱',
              'Subject: Hello World Email!\n\nHi there~’)
smtp.quit()

python test.py

如果沒有跳出任何錯誤,
收件者信箱會收到一封標題為 "Hello World Email!",內文為 "Hi there" 的信
也代表著以上設定都沒問題了!

https://ithelp.ithome.com.tw/upload/images/20181103/20111638AkKv8bRwhh.png


設定 Redash config

我的環境是 5.0.1+b4850,且是用 script 安裝(安裝效果等同 Docker-based)
所以要改的地方為 vim /opt/redash/docker-compose.yml
在每個 command 是 server, scheduler, worker 的 environment 的底下加上

REDASH_MAIL_SERVER: "smtp.gmail.com"
REDASH_MAIL_PORT: 587
REDASH_MAIL_USE_TLS: "true"
REDASH_MAIL_USERNAME: "你的google帳號@gmail.com"
REDASH_MAIL_PASSWORD: "剛拿到的16碼密碼不含任何符號"
REDASH_MAIL_DEFAULT_SENDER: "no-reply@example.com"

https://ithelp.ithome.com.tw/upload/images/20181103/20111638AzSdZbkwIn.png

https://ithelp.ithome.com.tw/upload/images/20181103/20111638ZUHIZ9YeL6.png

然後重啟 docker-compose

cd /opt/redash
docker-compose up -d

Redash 也提供另外一個指令可以測試 email 設定是否正確
docker-compose run --rm server manage send_test_mail

https://ithelp.ithome.com.tw/upload/images/20181103/20111638Eh7gBIrZay.png

看起來沒有任何錯誤訊息,就是一切 ok 了!


Redash 網頁測試發信功能

接下來可以進到帳號管理頁面,
按下 Send Password Reset Email 發信試試
(也會發覺上方提醒尚未設定 mail server 的紅色警示訊息消失了)

https://ithelp.ithome.com.tw/upload/images/20181103/2011163876LEqoqz1l.png

到該帳戶的信箱收信,會收到一封標題為 "Reset your password",
內容為有排版過的 Redash 重設密碼信,
這樣就大功告成了!

https://ithelp.ithome.com.tw/upload/images/20181103/20111638zBVjhmUGKn.png


使用案例

目前公司還沒使用到 mail server,趁著這次研究也打算導入到公司內部,
也可省下 Redash 管理員不少心力 (也就是本人自己 0rz)

設定甘苦談

本來是打算用 localhost 配合 smtp port 25 來設定,
但是一直遇到 errno 111 問題,
後來想到之前 PyLadies 的自動化系列活動Python email 設定是使用 Gmail,
就直接改以此設定,也很順利的完成

也有遇到 errno 99 是只在 server 的 environment 設定環境變數,
後來循著 Python Query 設定方式,把全部 worker 都加上相同環境變數就順利解決了!

參考資源
Python Sending Email > SMTP Module
Setting up a Redash Instance > Mail Configuration

ps. 文章同步發表於 Medium


上一篇
[Redash] Sunburst
下一篇
[Redash] Email Alert & Schedule
系列文
[BI工具] 以Redash為資料視覺化方案之選擇與實踐30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
tcvwqxh8
iT邦新手 5 級 ‧ 2022-03-04 00:49:32

想問一下 如果在google試算表 某一欄要下條件ex:A2>200時 發送 linenotify 或發mail 這樣該如何撰寫呢 感謝

我要留言

立即登入留言