サーバが起動したときとか、何かサービスが停止したときにはメールを飛ばす癖がついてる。
日常何気にメールを見てる半分はサーバからのレポートメールだったりする。
昔は25番ポートを使えばよかったけど、今は違ってきていて465とか587を使う。
自分が利用しているlolipopでもそういう流れらしい。
メールのセキュリティ強化における接続先変更のお願い - ロリポップ!レンタルサーバー
去年の暮れに「順次で25番ポート使えなくしまーす」ってアナウンスあった。
465番を使えって書いてあったけど、本当にその番号でいいのか。
何番のポートを使えばいいのか#
メールのポート番号はややこしい。
解説されているサイトがいくつかあった。作者さんありがとう。
SMTPポートの適切な選び方─25、587、465、2525番ポートの違い
ポート465と587の違いとは? | SendGridブログ
SMTP25番ポートと587番ポートの違い #ポート番号 - Qiita
lolipopのアナウンスは465番ってあったけど、587番を使うのが正解なんじゃないかと思う。
ということで587番の設定する。
設定した内容#
postfixの設定ファイルに追記#
何すればいいのかなって参考にさせてもらったサイトは2025年にはどっか行ってた。centosのサイトやししゃあないか。
https://centos.rcg.jp/ubuntu20_mailserver/
けっこう細かく書かれていて「メールサーバーのOP25B対策」のあたりを参考にさせてもらった。
postfixの/etc/postfix/main.cfの最後のほうに追記する。
1
2
3
4
5
6
|
relayhost = smtp.lolipop.jp:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
|
認証のための設定実施#
sasl_passwdってファイルに認証設定を書いておいてpostfixに使ってもらう。
1
2
3
4
|
# echo smtp.lolipop.jp:587 mailアドレス:mailパスワード > /etc/postfix/sasl_passwd
# chmod 640 /etc/postfix/sasl_passwd
# postmap /etc/postfix/sasl_passwd
# systemctl reload postfix
|
テストメールで確認#
メール処理はこんな感じ。
1
2
3
4
5
6
7
8
9
|
MAIL_TO="hogehoge@gavann-it.com"
MAIL_TITLE="auto)Start-gcp-gvis-dkLinux"
echo "gcp-gvis-xxlinux.intra.gavann-it.com just has begun. " > $MAILMSG
echo "////// gcp-gvis-nadkLinux Started //////\n" >> $MAILMSG
echo "////// gcp-gvis-nadkLinux ubuntu20 レポート //////" >> $MAILMSG
echo " \n" >> $MAILMSG
cat $MAILMSG | /usr/bin/mail -a "Content-Type: text/plain; charset=UTF-8" -s $MAIL_TITLE $MAIL_TO
|
charsetを指定したら本文に全角文字入れても文字化けしない。
ただしメールのタイトルには全角文字使えない。
でも一発目はメールが届かなかった。
参考にしたサイトの情報読み間違えたかなぁ。
/var/log/mail.logあたりにこんな記述があって認証失敗って言ってるみたい。
1
|
Mar 17 06:05:27 gcp-gvis-dklinux postfix/smtp[6775]: 38B007E489: to=<hogehoge@gavann-it.com>, relay=smtp.lolipop.jp[157.7.107.4]:587, delay=0.67, delays=0.01/0/0.67/0, dsn=4.7.0, status=deferred (SASL authentication failed; cannot authenticate to server smtp.lolipop.jp[157.7.107.4]: no mechanism available)
|
なんでかなぁって考えて/etc/postfix/sasl_passwdにある記述を変えてみた。
変更前は、
smtp.lolipop.jp:587
変更後は、
[smtp.lolipop.jp]:587
カッコつけたらうまくいった。
mail.logにもキューに入って送信成功したログが出てメール届いてた。
Mar 17 06:11:53 gcp-gvis-dklinux postfix/smtp[7588]: E40457E487: to=<hogehoge@gavann-it.com>, relay=smtp.lolipop.jp[157.7.107.4]:587, delay=1.3, delays=0.01/0/0.65/0.64, dsn=2.0.0, status=sent (250 Queued! <20220316211151.E40457E487@focl-fslinux.us-east1-b.c.gvis-3579.internal> (Queue-Id: 24B4F3140506))
Mar 17 06:11:53 gcp-gvis-dklinux postfix/qmgr[7583]: E40457E487: removed
メールがまた飛ばなくなった。
試行錯誤したら、つけたカッコを外したら飛ぶようになった。
なんやねん腹立つわー。
メールコマンドの経緯#
最初の頃はcentos5/6/7あたりを使ってlinuxと暮らしてた。
centos8あたりからdockerとxrdpがうまく使えなくなったので、ubuntu20に変えた。
2014年以前#
2014年頃、centosの頃はmailコマンドを使ってた。
これだけでメール飛んだなぁ。平和な時代やった。
1
2
3
4
5
6
7
8
|
MAIL_TO="hogehoge@gavann-it.com"
MAIL_TITLE="auto)testMail-naFSlinux-Homeテストメール"
echo -e "////// naFSLinux report start //////\n" >> $MAILMSG
echo -e "////// naFSLinux レポートテスト //////\n" >> $MAILMSG
echo -e "////// naFSLinux report end //////\n" >> $MAILMSG
/bin/mail -s $MAIL_TITLE $MAIL_TO < $MAILMSG
|
2016年頃#
あるときmailコマンドでメール飛ばなくなってsendmailを使ってた。
この頃からcentos使うの怪しくなってきた。
たぶんこんな感じ。gitにスクリプトの経緯は残してないから、厳密にはこれだけじゃなかったかも。
1
2
3
4
5
6
7
8
9
|
MAIL_TO="hogehoge@gavann-it.com"
echo "To: " $MAIL_TO > $MAILMSG
echo "From: hogehoge@gavann-it.com" >> $MAILMSG
echo "Subject: auto)Start gcp-gvis-naLinux" >> $MAILMSG
echo "////// gcp-gvis-nadkLinux Started //////\n" >> $MAILMSG
echo " \n" >> $MAILMSG
cat $MAILMSG | /sbin/sendmail -t
|
2025年頃#
sendmailやなくてmailに戻ってる。
1
2
3
4
5
6
7
8
9
10
11
|
MAIL_TO="hogehoge@gavann-it.com"
MAIL_TITLE="auto-testMail-naFSlinux-Home"
rm -f $MAILMSG
# Report mail make--r--------------------------------------------#
echo "////// naFSLinux report start //////" >> $MAILMSG
echo "////// naFSLinux ubuntu24 レポートテスト //////" >> $MAILMSG
echo "////// naFSLinux report end //////" >> $MAILMSG
### /usr/bin/mail -s $MAIL_TITLE $MAIL_TO < $MAILMSG
cat $MAILMSG | /usr/bin/mail -a "Content-Type: text/plain; charset=UTF-8" -s $MAIL_TITLE $MAIL_TO
|