linuxユーザを追加したときsendmailに必要な設定を行う
ごく基本的な内容なのだが自分用メモとして書いておく。
現象
crontabのエラー通知がメールとして届かない。/var/log/maillogを見ると、user_hoge@example.comに送ろうとして、user unknownで失敗している。
環境
とあるVPSで借りているRHEL4。
% cat /etc/redhat-release
Red Hat Enterprise Linux ES release 4 (Nahant Update 4)
% uname -a
Linux phyzz.bz 2.6.18-028stab056 #1 SMP Mon Nov 2 13:19:07 UTC 2009 i686 i686 i386 GNU/Linux
対処
sendmailの仮想ユーザテーブルを書き換え、データベースファイルを更新する。
用語
- example.com
→サーバ契約と同時に取得したドメイン - user_hoge
→サーバ引き渡し時に用意されていたユーザ名 - user_kwappa
→新しく追加したcronを動作させるユーザ名
/etc/mail/virtusertableの修正
変更前
% cat /etc/mail/virtusertable
apache@example.com apache
root@example.com user_hoge
postmaster@example.com user_hoge
user_hoge@example.com user_hoge
@example.com error:nouser User unknown
左側のアカウント宛に送られたメールは右側のユーザのメールボックスに転送される。主に管理するユーザはuser_kwappaなので、rootとかpostmaster宛のものも転送設定する。
変更後
# vi /etc/mail/virtusertable
apache@example.com user_kwappa
root@example.com user_kwappa
postmaster@example.com user_kwappa
user_hoge@example.com user_hoge
user_kwappa@example.com user_kwappa
@example.com error:nouser User unknown
データベースの更新
データベースの更新
# makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable
まとめ
わかってしまえばまぁ当然みたいな内容だけど、たどり着くのはそれなりに大変だった。linuxのユーザアカウントでメールを受け取る機会なんて減ってるしなぁ…と言い訳しつつ、インフラの勉強も継続しなければと反省している。