Muttでコマンドラインからメールを送信

systemdにはユーザモードがありBotなどをユーザ権限でデーモン化することができます。さらにsystemdを使うことで再起動機能やログの管理等のメリットが享受できます。またBotが原因不明で止まった場合メールで知らせる機能を追加しようと考えてコマンドラインから使えるメールソフトを探してみました。そのなかでMuttがもっとも機能的に受け入れられたので採用することにしました。ところが設定が難しくなかなかメールサーバにログインできず、いろいろ検索した結果できるようになりました。そのときのテンプレート用に使えるファイルと載せておきます。

Muttのユーザ用の設定ファイルは$HOME/.muttrcです。

set realname = 'botmail123'
set from = botmail123@mydomain.tld
set use_from = yes

set smtp_url = "smtp://botmail123@mydomain.tld@mx.mydomain.tld:587/"
set smtp_pass = "xxxxxxxxxxxxxxx"
set imap_user = "botmail123@mydomain.tld"
set imap_pass = "xxxxxxxxxxxxxxx"

set folder = "imaps://mx.mydomain.tld:993"
set spoolfile = "+INBOX"

set header_cache=~/.mutt/cache/headers
set message_cachedir=~/.mutt/cache/bodies
set certificate_file=~/.mutt/certificates

set mail_check = 30
set move = no
set imap_keepalive = 900
set sort = threads
set editor = "nano"
set send_charset="us-ascii:utf-8"

# GnuPG bootstrap
# source ~/.mutt/gpg.rc

 

操作方法:Archlinux WIKIより

一般の方法

mutt -s "Subject" somejoeorjane@someserver.com < mail.txt

もちろんパイプでもできます

echo 'hello from mydomain' | mutt -s "Subject" somejoeorjane@someserver.com

長文の場合

mutt -s "Subject" somejoeorjane@someserver.com <<'EOF'
> 拝啓
> 初冬のみぎり 皆様におかれましては益々ご清祥の事とお慶び申し上げます。
> この度は お心のこもった品物を頂戴いたしまして誠にありがとうございます。
> これから寒さの本番ですので 皆様どうぞご自愛くださいませ。
> まずは取り急ぎ 書中をもちまして御礼を申し上げます。
> 
> 敬具
> EOF

ファイルを添付する場合

mutt -s "Subject" somejoeorjane@someserver.com -a somefile < mail.txt