cron の結果は root にメールで届くって書いてあった
でも root でメールなんか読んだことない
【疑問】root 宛てのメールはどこに行くん?/etc/aliases・newaliases・~/.forward・mail・mailq と postfix・sendmail・exim【LPICレベル1】
前提のおさらい。ユーザーは /etc/passwd に書かれてて、root のほかにも daemon などのシステム用のユーザーがいる。そういうユーザーにもメールは届く
>>1
メールを受け取って配る役目のプログラムを MTA(Mail Transfer Agent)と呼ぶ。postfix、sendmail、exim など
root 宛てのメールを普段使うユーザーに回すのが /etc/aliases
>>3
書き方は?
>>4名前: 届け先, 届け先, ...(aliases の man)postmaster: rootroot: userwebmaster: user, user2
届け先には、ほかのアドレス(user@example.com)、ファイル(/var/log/mail-copy)、コマンド("|/usr/local/bin/filter")、:include:ファイル も書ける
>>5
書いたのに転送されへん
>>6newaliases を実行してない。MTA はテキストの /etc/aliases やなくて、そこから作ったデータベース(aliases.db など)を見てる。直したら毎回 newaliases
>>7
newaliases は sendmail -I(postfix の man)や sendmail -bi と同じ
自分宛てのメールを自分で別のアドレスに転送したい。root やないけど
>>9
ホームディレクトリに ~/.forward を置いて、届け先を書く。書き方は aliases の右側と同じで、root の作業は要らんuser@example.com
>>10
転送しながら手元にも残したいなら?
>>11
自分の名前の前に \ を付けて並べる。\user, user@example.com。\ がないと、また .forward を見に行ってしまう
>>3
メールを読んだり送ったりするのは?
>>13
mail コマンド(mailx)。引数なしで起動すると届いたメールの一覧
送るのは mail -s "件名" user@example.com(本文を入力して Ctrl+D)。-c で CC、-b で BCC
スクリプトなら echo "done" | mail -s "backup" root
試したマシンには mail コマンドがなかったから、bsd-mailx の man で確認した
>>3
送ったのにまだ届かないメールは?
>>15mailq でキュー(送り待ち)を表示する。中身は sendmail -bp と同じで、postfix では postqueue -p とも同じ
キューにたまってたら、相手につながらないか、名前を引けないか、ログ(/var/log/mail.log や journalctl -u postfix)を見る
>>3
postfix を入れてるのに sendmail ってコマンドがあるのはなんで?
>>17
sendmail が昔からの MTA で、スクリプトや cron が /usr/sbin/sendmail を呼ぶ前提で作られてるから。postfix も exim も、同じ名前と同じオプションで動く互換のコマンドを置いてる。mailq・newaliases もその仲間
>>17
メールのサーバー同士は TCP の25番(SMTP)でやりとりする。ローカルだけで使う設定(loopback-only)にしとけば外から受けない
>>7
/etc/aliases で root を普段のユーザーへ、直したら newaliases、自分の転送は ~/.forward、たまってないかは mailq。sendmail は互換のコマンドか
管理人のひとこと
- MTA(postfix・sendmail・exim)がメールを受け取って配る。どれも /usr/sbin/sendmail という互換コマンドを持ち、mailq・newaliases も互換で使える。
- /etc/aliases の書式は
名前: 届け先, ...(アドレス、/ファイル、"|コマンド"、:include:)。変更後は newaliases(sendmail -bi・-I)でデータベースを作り直す。 - ~/.forward はユーザーが自分で転送先を書く(右側と同じ書式。
\自分で手元にも残す)。 - mail(mailx):引数なしで読む、
mail -s 件名 宛先で送る(-c・-b)。mailq(sendmail -bp・postqueue -p)でキューを確認。SMTP は TCP 25。