【2017.10.12】こちらのページの説明が古くなってしまったので、「CentOS7」で「sendmail」を使用するための説明をこちらのページに新しく作成しました。
検証環境
CentOS 4.4
sendmail-8.13.1-3.RHEL4.5
sendmail-cf-8.13.1-3.RHEL4.5
設定方法
sendmailの基本設定ファイルはsendmail.cfというファイルなのですが、このsendmail.cfの書式は難解で手作業で編集するのは結構難しいので、今回は比較的分りやすいsendmail.mcというファイルと、m4マクロを使用して設定していきます。
※ m4マクロを使用するには、sendmail-cfがインストールされている必要があります。
sendmail.mc編集
/etc/mailディレクトリにsendmail.mcというファイルがあるので、そのファイルを編集し m4マクロを使用してsendmail.cfを作成します。
# cd /etc/mail
# cp -p sendmail.mc sendmail.mc_yyyymmdd
# cp -p sendmail.cf sendmail.cf_yyyymmdd
# vi sendmail.mc
ホスト名設定
まず、ホスト名とドメイン名を設定します。
今回はmail.server-memo.netを設定することとします。
編集項目
以下の太字部分を追加します。
include(`/usr/share/sendmail-cf/m4/cf.m4')dnl
VERSIONID(`setup for Red Hat Linux')dnl
OSTYPE(`linux')dnl
Dwmail Dmserver-memo.net
書式的には、「Dwホスト名」「Dmドメイン名」となります。
2009.01.21 追記
最近CentOS5でsendmailの設定を行ったところ上記の設定のほかに、以下の設定も必要でした。
CentOS4ではデフォルトで設定させれていたのですかね・・・
define(`confDOMAIN_NAME',`$w.$m')dnl
smtp接続(リレー)許可設定
デフォルトの設定ですと、最近のsendmailはlocalhost(127.0.0.1)からしかメールの送信出来ません。メールサーバとしてこれでは不味いので、他のクライアントからもメールを送信できるようにします。
編集前
CentOS4.4のsendmail初期設定では、以下のように設定されていて127.0.0.1からしかsmtp接続を許可していません。
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
編集後
先頭にdnlをつけて、この設定をコメント化し他のネットワークからもsmtp接続を受け付けるようにします。
dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
不正中継防止設定(リレー制限)
上記のsmtp接続(リレー)許可設定だけですとどこからでもsmtp接続を許可してしまい、今度は不正中継に利用されてしまいます。ですので、smtp接続の制限(リレー制限)設定を行います。
まず、sendmail.mcファイルに以下の設定があることを確認します。
FEATURE(`access_db',`hash -T<TMPF> -o /etc/mail/access.db')dnl
実際の設定は/etc/mail/accessファイルに設定を記述し、makemapコマンドを使用して hash化された/etc/mail/access.dbファイルを作成することで、sendmailに設定を読み込ませます。
# cd /etc/mail/
# cp -p access access_yyymmdd
# cp -p access.db access.db <-- access.dbがあればバックアップを行う
# vi access
今回は、自宅のネットワークである192.168.0.0/24と172.17.0.0/16のネットワークからのメールのリレーを許可する設定を行います。太字部分を追加しました。
/etc/mail/access 設定内容
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
192.168.0 RELAY 172.17 RELAY
access.db作成
実際にsendmailより読み込まれるデータは/etc/mail/access.dbですので、編集を行った/etc/mail/accessファイルより makemapコマンドを使用して、access.dbファイルを作成します。
# makemap hash access.db < access
補足説明
※ sendmail.mcに「FEATURE(`access_db',`hash -T<TMPF> -o /etc/mail/access.db')dnl」があるので sendmailを再起動することでもaccess.dbは作成されます。
※ makemapコマンドを使用してaccess.dbを作成すると、sendmailを再起動させることなく access.dbの内容を即時sendmailへ反映させることが出来ます。
受信ドメイン設定
/etc/mail/local-host-namesを設定することで、sendmailが受信するドメイン名の設定を行います。この設定が無いとメールを受信することが出来ませんので注意してください。
# cp -p local-host-names local-host-names
# vi local-host-names
編集項目
設定は簡単で受信したいドメイン名を記述するだけです。
今回はserver-memo.netドメイン宛のメールを受信するように設定します。
server-memo.net
sendmail.cf作成
今まで設定を行ってきたsendmail.mcをm4マクロを使用して、実際にsendmailに読み込まれるsendmail.cfへ変換する作業を行います。
# m4 sendmail.mc > sendmail.cf
これで、sendmail.mcの設定内容がsenndmail.cfへ反映されました。
# make -C /etc/mail
こちらの方法でもsendmail.mcからsendmail.cfファイルを作成することが出来ます。
設定反映
設定が終わったら、設定内容をsendmailへ反映させます。反映方法はsendmailを再起動するだけです。
# /etc/init.d/sendmail restart
sendmail を停止中: [ OK ]
sm-client を停止中: [ OK ]
sendmail を起動中: [ OK ]
sm-client を起動中: [ OK ]
これで、sendmailへ設定が反映されたはずです。:-)
自動起動設定
CentOS4.4の場合
chkconfigコマンドを使用して自動起動設定状況を確認してみましょう。
# chkconfig --list sendmail
sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off
自動起動の設定がされていない場合は設定をします。
# chkconfig sendmail on
※ sendmailをsourceよりインストールした場合は、起動スクリプトを作成して/etc/rc.d/init.d/ディレクトリに置いておかなければいけないでしょう。
FreeBSDの場合
FreeBSDの場合は、/etc/rc.confを編集することで自動起動設定を行います。
(OSインストール時のsendmailとportsでインストールした場合の設定方法です。sourceからインストールした場合は方法が異なるでしょう。)
# cp -p /etc/rc.conf /etc/rc.conf_yyyymmdd
# vi /etc/rc.conf
編集項目
FreeBSD6.1では/etc/rc.confに以下の二行を明示的に入れないと、Sendmailはローカル以外の接続を受け付けませんので注意してください。
sendmail_enable="YES"
sendmail_submit_enable="YES"
以上。
コメント