Ubuntuには、定期的にプログラムやスクリプトを実行する「cron」という仕組みがあります。cronは、実行後にcronを設定した人に向けてメールが送信されるようになっています。しかし、色々な事情でその確認メールを送信したくない場合があります。
Linuxのディストリビューションやバージョンによって微妙に違う、という問題
で、色々検索してみると「crontabを編集」とか「/var/spool/usersを編集」とか「出力を /dev/null にリダイレクト」など、古い方法は見つかるのですが、Ubuntu18での方法は見当たらなかったので(というか、Ubuntu18に限らず大体同じなんですが)記事にしておくことにしました。
結論としては「MAILTOに空文字を設定する」でメールは止まる
cronファイルをviやvimなどのテキストエディタで開いて、下記のようにします。
<変更前>
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin 0 */3 * * * root (何らかのコマンド) > /dev/null
<変更後>
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO="" 0 */3 * * * root (何らかのコマンド) > /dev/null
要するに「MAILTO=””」があれば、メール送信先が空になるのでメールが送られないという話です。
ただ、これだとエラーが起こった時にもメールは来ないので、初めはMAILTOに動作確認用メールアドレスを設定しておいて、正しく動作していることが確認されてから、あとで空文字にするのがいいかなと思います。
