BACK最新はSendmail-8.14.4です最新はSendmail-8.14.4です。availableSendmail-8.13.6へのバージョンアップ久しぶりにsendmailのサイトを覗いたら、かなり深刻なセキュリテイーバグが発見され、最悪の場合、リモートからサーバーが乗っ取られるとのことである。Sendmail-8.13.6へバージョンアップするか、最低でもセキュリティー・パッチを当てる必要がある。8.13.5へバージョンアップしたが、それで安心して、その後の動向を気にしていなかった。Sendmail-8.13.6は2006-03-26にリリースされており、約2ヶ月間もその事実を見逃していたことになるが、早速、バージョンアップを実施した。バージョンアップの手順は以前のとおりであるが、コンパイルでトラブルが発生した。/usr/home/mac/sendmail-8.13.6/obj.FreeBSD.4.10-RC3.i386/sendmail.とエラーになってしまった。-cとすると無事コンパイルできた。コンパイル後のインストールやcfファイルの作成は以前のメモどおりでOKである。このバグはリモートから管理者権限を奪取されてしまうというかなり深刻なものである。我が自宅サーバーのsendmailのバージョンは8.11.6で、もちろんバグを含んでいる。詳細はhttp://jvn.doi.ics.keio.ac.jp/vn/JVNCA-2003-07.htmlを参照してもらいたい。我が自宅サーバーで使用中のFreeBSD4.4Rにマッチしたセキュリティーパッチがなかったので、バグフィクスされたsendmail8.12.8にバージョンアップすることにした。これはFreeBSD4.4R+sendmail8.11.6からFreeBSD4.4R+sendmail8.12.8へのバージョンアップにおけるメモである。このバージョンアップ直後にsendmailに別のセキュリティーホールが発見され、その対応版としてsendmail8.12.9がリリースされた。詳細はhttp://jvn.doi.ics.keio.ac.jp/vn/JVNCA-2003-12.htmlを参照してもらいたい。バージョンアップの方法はsendmail8.12.8をsendmail8.12.9と読み替えてもらいたい。私はすでにsendmail8.12.8にバージョンアップしていたので、sendmail8.12.9をダウンロードしコンパイルしてバイナリー本体をインストールしただけで、cf等はsendmail8.12.8のものをそのまま使用した。その後、またまた別のセキュリティホールが発見され、最新はsendmail8.12.11になっている。現在、我がサイトはFreeBSD4.10R+sendmail8.12.11で運用している。最新バージョンはhttp://www.sendmail.org/8.12.8.htmlからダウンロードする。sendmailのサイトにはダウンロードしたファイルが信頼できるものかどうかPGP署名をかならずチェックせよと書いてある。code.実はPGPとかは使ったことがないが、portsからインストールしてなんとか認証することができた。残念ながらこのあたりについてメモを書けるほど理解していないので別の機会にしたい。ソースの本体はsendmail.8.12.8.tar.gzであるが、PGPでチェックする場合、sendmail.8.12.8.tar.gz.sigも必要となる。ダウンロードしたファイルのチェックサムの確認方法は以下のとおりである。2ecf7890c2ff5035aed8d342473d85a5ユーザーの登録sendmailは8.12になってからインストールする際にsmmspというユーザーを作る必要がある。FreeBSD5.0ではmailnullというユーザーも必要らしいのでついでに登録した。ユーザーの登録はvipwというコマンドを使用する。これは/etc/master.passwd専用のエディターであり、使い方もviと同じである。User:/var/spool/mqueue:/sbin/nologinを追加する。/etc/groupも編集する。こちらは普通のviでOKである。/etc/groupsmmsp:*:25:mailnull:*:26:を追加した。ユーザー登録の際に指定したclientmqueueディレクトリーを作成し、パーミッションを変更する。devtools/Site/site.config.m4define(`confMBINDIR',`/usr/libexec/sendmail')とする。インストールに失敗したときの保険としてオリジナルのファイルを退避しておく。/etc/mail/sendmail.cf.bkコンパイル、インストールいよいよコンパイル、インストールを実施する。installでインストール完了である。installとする。submit.cfファイルの準備sendmail8.12.8ではsendmail.cfの他にsubmit.cfも必要となる。`[127.0.0.1]')dnlとした。submit.cfを作るためには以下のコマンドを使う。/etc/mail/で/etc/mailへコピーする。sendmail.cfは8.11.6で使用したもので試験してみる。現用のsendmail-8.11.6を停止しておく。sendmailのPIDとする。現用のsendmail.cfを使って試験してみる。/etc/mail/sendmail.cfsendmail-8.11.6で使用したsendmail.cfのままであるとcfのバージョンが違うとメッセージがでるはずである。invoked)また、アクセス制御の構文も違うとメッセージが出る。/etc/mail/access)このままでも動くはずであるが、sendmail.mcを手直しする。sendmail-8.11.6で使っていたsendmail.mcは以下のとおりである。`authwarnings,noexpn,novrfy')dnlMAILER(`local')dnlMAILER(`smtp')dnl5行目の構文を以下のように変更した。/etc/mail/access')dnl他は8.11.6で使用したsendmail.mcのままである。メールを送信した実際のホスト名ではなく、別名を使うという指定とのことである。実際はhogehoge@mail.mydomain.comであるが、ここに設定することにより、hogehoge@mydomain.comと表示されるようになる。設定を行った場合には/etc/mail/local-host-namesに、受け取るメールアドレスのドメイン名部分を書いておく必要があるので、/etc/mail/local-host-namesmydomain.comns.mydomain.commail.mydomain.comと記述する。最下行は外部のMXにmail.mydomain.comと設定したあるので念のためである。FEATURE(`local_lmtp')dnlはFreeBSD4.2R以降では記述する必要がある。mail.localにSUIDにセットされなくなりそのためローカルユーザの配送に不具合がでるのを防ぐためである。`0s')dnlはIDENT認証を行わないように待ち時間を0秒とするものである。これを設定することによりルーターで113を通す必要がなくなる。指定したファイルで行うために設定する。いうサンプルが用意されている。RELAYと記述する。データベースに変換しておく必要があるので以下のコマンドを実施する。/etc/mail/として、置き換える。sendmailの起動8.12.8では2つのプロセスを起動する必要がある。-q30mでOKとなる。(sendmail)のようになるはずである。LISTENのようにsmtpが1つだけであることも確認しておく。ついでに、起動させたsendmailのバージョンを確認する。8.12.8と無事、最新のバージョンとなっていた。セキュリティーチェックこれで、バージョンアップは完了したので、不正中継をしないか確認する。おすすめのhttp://www.abuse.net/relay.htmlでチェックすると全項目、無事パスした。最後に、以下のファイルのパーミッションを確認しておく。/etc/mail/submit.cf自動起動FreeBSD4.4+sendmail-8.11.6では/etc/rc.confから起動するようになっていたが、sendmail-8.12.8では2つのプロセスを起動させるためこれでは都合が悪い。そのため、/etc/rc.confでの起動を停止してshスクリプトからの起動に変更する。sendmail_enable="YES"からsendmail_enable="NONE"とする。ここはただの"NO"ではなく"NONE"にする必要がある。shスクリプトは以下のものを作り、/usr/local/etc/rc.d/sendmail.shとした。sendmail.shとする。fmlのチェック自宅サーバーではfmlによるメーリングリストを3つ稼働させているのでそちらもチェックした。/var/log/maillogとしてキーボードでShift+Fとするとリアルタイムで配送状況を確認できる。問題ないが、やはりqmailの方が格段に速いようである。バージョンアップしたので、FreeBSD+qmail環境のHDDの替わりにFreeBSD+sendmail環境のHDDでサーバー運用しよう。