読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】root 宛てのメールはどこに行くん?/etc/aliases・newaliases・~/.forward・mail・mailq と postfix・sendmail・exim【LPICレベル1】

20レスカテゴリ:Linux
1: 名無しさん

cron の結果は root にメールで届くって書いてあった
でも root でメールなんか読んだことない

2: 名無しさん

前提のおさらい。ユーザーは /etc/passwd に書かれてて、root のほかにも daemon などのシステム用のユーザーがいる。そういうユーザーにもメールは届く

3: 名無しさん

>>1
メールを受け取って配る役目のプログラムを MTA(Mail Transfer Agent)と呼ぶ。postfix、sendmail、exim など
root 宛てのメールを普段使うユーザーに回すのが /etc/aliases

4: 名無しさん

>>3
書き方は?

5: 名無しさん

>>4
名前: 届け先, 届け先, ...(aliases の man)
postmaster: root
root: user
webmaster: user, user2
届け先には、ほかのアドレス(user@example.com)、ファイル(/var/log/mail-copy)、コマンド("|/usr/local/bin/filter")、:include:ファイル も書ける

6: 名無しさん

>>5
書いたのに転送されへん

7: 名無しさん

>>6
newaliases を実行してない。MTA はテキストの /etc/aliases やなくて、そこから作ったデータベース(aliases.db など)を見てる。直したら毎回 newaliases

8: 名無しさん

>>7
newaliases は sendmail -I(postfix の man)や sendmail -bi と同じ

9: 名無しさん

自分宛てのメールを自分で別のアドレスに転送したい。root やないけど

10: 名無しさん

>>9
ホームディレクトリに ~/.forward を置いて、届け先を書く。書き方は aliases の右側と同じで、root の作業は要らん
user@example.com

11: 名無しさん

>>10
転送しながら手元にも残したいなら?

12: 名無しさん

>>11
自分の名前の前に \ を付けて並べる。\user, user@example.com。\ がないと、また .forward を見に行ってしまう

13: 名無しさん

>>3
メールを読んだり送ったりするのは?

14: 名無しさん

>>13
mail コマンド(mailx)。引数なしで起動すると届いたメールの一覧
送るのは mail -s "件名" user@example.com(本文を入力して Ctrl+D)。-c で CC、-b で BCC
スクリプトなら echo "done" | mail -s "backup" root
試したマシンには mail コマンドがなかったから、bsd-mailx の man で確認した

15: 名無しさん

>>3
送ったのにまだ届かないメールは?

16: 名無しさん

>>15
mailq でキュー(送り待ち)を表示する。中身は sendmail -bp と同じで、postfix では postqueue -p とも同じ
キューにたまってたら、相手につながらないか、名前を引けないか、ログ(/var/log/mail.log や journalctl -u postfix)を見る

17: 名無しさん

>>3
postfix を入れてるのに sendmail ってコマンドがあるのはなんで?

18: 名無しさん

>>17
sendmail が昔からの MTA で、スクリプトや cron が /usr/sbin/sendmail を呼ぶ前提で作られてるから。postfix も exim も、同じ名前と同じオプションで動く互換のコマンドを置いてる。mailq・newaliases もその仲間

19: 名無しさん

>>17
メールのサーバー同士は TCP の25番(SMTP)でやりとりする。ローカルだけで使う設定(loopback-only)にしとけば外から受けない

20: 名無しさん

>>7
/etc/aliases で root を普段のユーザーへ、直したら newaliases、自分の転送は ~/.forward、たまってないかは mailq。sendmail は互換のコマンドか

管理人のひとこと