Google Code Prettify

2007年12月12日

Nullクライアントでメールを集める - sendmail編

OpenDirectory で認証を一元管理すると、個別のホストにメールスプールがある必要は無く、一カ所のドメインの Mail Hub に集めるのがよい。このとき、個々のホストのメールサーバの設定は、Null クライアントと呼ばれる。

Leopard Server をドメインの Mail Hub にするには次の設定を必要がある。ただ、実際には GUI ツールの「サーバ管理」で対応する項目を変更する。

  1. DNSサーバで、ドメイン名に対してMXレコードを設定する

    example.com IN MX 10 leopard.example.com

  2. ドメイン名を mydestination に追加する

/etc/postfix/main.cf

...
mydomain = example.com
...
mydestination = ... $mydomain
...

今まで認証してきたOSのNullクライアントの設定をしよう。

Sendmail の設定

伝統的にほとんどのシステムのデフォルトになっている。 設定ファイル sendmail.cf を直に編集するには骨が折れるので、 簡便に設定できる cf (?) のソース設定ファイル sendmail.mc を使うのが要である。

OSsendmail cfの場所OSTYPEDOMAIN
RedHat 6.28.11.6 /usr/lib/sendmail-cf linuxgeneric
RedHat 7.28.11.6 /usr/share/sendmail-cf linuxgeneric
RedHat 7.38.12.11.20060308 /usr/share/sendmail-cf linuxgeneric
RedHat 88.12.8 /usr/share/sendmail-cf linuxgeneric
RedHat 98.12.11.20060308 /usr/share/sendmail-cf linuxgeneric
Fedora Core 18.12.11.20060308 /usr/share/sendmail-cf linuxgeneric
Fedora Core 28.12.11.20060308 /usr/share/sendmail-cf linuxgeneric
Fedora Core 38.13.1 /usr/share/sendmail-cf linuxgeneric
Fedora Core 48.13.7 /usr/share/sendmail-cf linuxgeneric
Fedora Core 58.13.8 /usr/share/sendmail-cf linuxgeneric
Fedora Core 68.14.1 /usr/share/sendmail-cf linuxgeneric
Fedora78.14.1 /usr/share/sendmail-cf linuxgeneric
Fedora88.14.1 /usr/share/sendmail-cf linuxgeneric
CentOS 4.x8.13.1 /usr/share/sendmail-cf linuxgeneric
CentOS 5.x8.13.8 /usr/share/sendmail-cf linuxgeneric
FreeBSD 6.28.13.8 /usr/share/sendmail/cf freebsd6generic
NetBSD 3.18.13.5.20060614 /usr/share/sendmail bsd4.4generic
Solaris88.11.7p3+Sun /usr/lib/mail solaris8solaris-generic
Solaris98.13.8+Sun /usr/lib/mail solaris8solaris-generic
Solaris108.13.8+Sun /etc/mail/cf solaris8solaris-generic

取り敢えず、今日の時点の最新パッチを当てたり、当てなかったりの状態なので、異なって場合もある。

sendmail.mc の設定

/etc/mail/sendmail.mc

include(`/usr/share/sendmail-cf/m4/cf.m4')
OSTYPE(`linux')
DOMAIN(`generic')
# 上の3行は、システムに応じて変更
FEATURE(`no_default_msa')
FEATURE(`nullclient', `example.com.')
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')

Null クライアント設定で、エンベロープ/ヘッダの発信者/受信者ともに example.com ドメインにマスカレードする。 ただし、ヘッダの発信者/受信者のrootユーザのみ除外される。 (rootも対象にする場合、generic.m4 ファイル内の EXPOSED_USER を変更すればよい)。 かつ、リモートアクセスを受けない。

sendmail.cf の生成

m4 を使って生成する。 Solarisだと companionパッケージのGNU m4を使った方(/{opt,usr}/sfw/bin/gm4)がよい。

# ${M4} /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

sendmail の起動

RedHat/Fedora/CentOS/Solaris8/9の場合

# /etc/init.d/sendmail restart

FreeBSD 6.2

# grep sendmail /etc/rc.conf
sendmail_enable="YES"
# /etc/rc.d/sendmail restart

NetNSD 3.1

# grep sendmail /etc/rc.conf
sendmail=YES
# /etc/rc.d/sendmail restart

Solaris10の場合

# svccfg -s sendmail setprop config/local_only=false
# svcadm refresh sendmail
# svcadm restart sendmail

メールの配送確認

これで、root, 一般ユーザ, 不明ユーザでメールを出して、戻されること無くMail Hub 内で処理されればよい。

# date | mailx -s Test root
# date | mailx -s Test user
# date | mailx -s Test unknown

追記

Open Directory の設定のまとめ 2008Q1

0 件のコメント:

久しぶりの投稿

かなり期間が空いてしまったが、ブログを再開してみようと思う。 2013年3月が直前の投稿だったが、頻繁に更新していた時期が 2011年11月までなので、8年間ぶりとなる。 8年間なにをしていたのかと言えば、2回転職して未だにIT技術者の職を得ている。 その...