2021年11月18日 星期四

在 Linux bash 寄 gmail 信附加檔案

固定時間要備份資料庫檔案,

之前想到到用 rclone 備份到 google drive,

但是要設定時要進行2步驟認證,

還有權限會可以讀寫帳號內整個 google drive,

有點不安全。

就改成換用寄 email 附加資料庫檔案,

但是要用 systemd timer 定期執行,

用 bash 指令會比較適合



指令:

echo "content text" | mutt -a "/attachment/file.7z" -s "subject text" -- my.email@gmail.com

 
在 archlinux 中先安裝2個套件
在 AUR 中的 ssmtp
還有包含 uuencode 的 sharutils

之後設定 ssmtp 設定檔 /etc/ssmtp/ssmtp.conf

root=xxxxx@gmail.com
mailhub=smtp.gmail.com:587
RewriteDomain=gmail.com
Hostname=host.me.idv
FromLineOverride=YES
UseTLS=YES
UseSTARTTLS=Yes
TLS_CA_File=/etc/ssl/certs/ca-certificates.crt
AuthUser=rexct1@gmail.com
AuthPass=my_password

設定檔存檔後就可以用下列指令寄信
信件標題是 mail title
內容是 content text
name.7z 是要附加的檔案

echo -e "to: to_user@gmail.com\nsubject: mail title\ncontent text"| (cat - && uuencode /attach/file/name.7z display_name.7z) | ssmtp to_user@gmail.com

但是上面方法會多產生一個 noname 的附加檔案,

有篇 IBM 文章寫因為不支援 MIME 造成的,
Why do I get 'unnamed' or 'noname' attachments when using uuencode and mailx?

https://www.ibm.com/support/pages/why-do-i-get-unnamed-or-noname-attachments-when-using-uuencode-and-mailx

 

所以加上用 mutt 當前端

echo "content text" | mutt -a "/attachment/file.7z" -s "subject text" -- my.email@gmail.com

 

Cent OS 7 無法以 mutt 寄信

在 Cent OS 7 安裝mutt後,直接以上方指令寄信會沒反應,

要先手動設定 mutt 設定檔

vim ~/.muttrc

set imap_user = "my_email@gmail.com"
set imap_pass = "my_password"

set smtp_url = "smtp://my_email@smtp.gmail.com:587/"
set smtp_pass = "my_password"

set from = "my_email@gmail.com"
set realname = "my name"


如果出現

No authenticators available
Could not send the message.

下方網頁找到是缺少 cyrus-sasl-plain 套件

If you get "no authenticators available" with mutt

https://groups.google.com/g/qubes-users/c/hL_UGJo1B9s?pli=1

#yum install cyrus-sasl-plain


 

參考資料:

How do I send a file as an email attachment using Linux command line?

https://stackoverflow.com/questions/17359/how-do-i-send-a-file-as-an-email-attachment-using-linux-command-line


How can I send attachment with ssmtp in Linux?

https://unix.stackexchange.com/questions/44043/how-can-i-send-attachment-with-ssmtp-in-linux



Unable to configure Mutt email client

https://www.linuxquestions.org/questions/linux-newbie-8/unable-to-configure-mutt-email-client-4175513968/


"SASL authentication failed" with mutt and Gmail, why? [closed]
https://askubuntu.com/questions/81924/sasl-authentication-failed-with-mutt-and-gmail-why

 

 

沒有留言:

張貼留言