外部でメールサーバを管理している場合の注意点

RapidSiteはメール送信にsendmailを使用していますが、メールサーバを外部で管理している場合には、注意が必要です。
例えばお問い合わせフォーム等でメールを送信したい場合に、別ドメインの場合には問題なく送信できますが、自ドメインの場合にはlocalhostに配送され、外部に送信できない場合があります。
この場合には、hostname等をテンポラリドメインに変更して対処します。
※IPアドレス、ホスト名、テンポラリドメイン名はサンプルなので、自分の環境に合わせて読み替えて下さい。)
※最近では、VPSプランによっては、テンポラリドメイン名がない場合もあります。その場合には、任意の名前を付けて下さい。

※契約時に「ドメイン名なし」で契約すると、以下の作業は不要となります。
    任意のサブドメイン名が付いて管理しづらいかもしれませんが、DNSサーバを独自に管理している場合はこの方が作業が楽です。

1. hostnameの変更

ホスト名をテンポラリドメイン名に変更します。

(1) hostnameコマンド

まず、現在のホスト名を確認します。
# hostname

次に、hostnameコマンドを使用して、応急的にホスト名を変更します。
# hostname test123.tempdomainname.com

ホスト名が変更されたかどうか確認します。
# hostname
※テンポラリドメイン名が無いVPSシリーズの場合には、ホスト名をwww付きのドメイン名など、任意の名称に変更します。

(2) /etc/sysconfig/networkファイルの編集

hostnameコマンドで変更した場合には、サーバを再起動するとまた元のホスト名に戻ってしまうので、「/etc/sysconfig/network」ファイルの「HOSTNAME=」項目を編集します。
# vi /etc/sysconfig/network
※※※【重要】※※※(2011.06.23追記)
RapidSiteではサーバを再起動すると、このnetworkファイルを初期状態に戻してしまう仕様になっているそうです。
そこで、カスタマイズしたnetworkファイルをどこかに置いておいて、サーバ起動時に強制上書きするようなスクリプトを実行させなければなりません。

【変更前】
HOSTNAME="xxsample.jp"

【変更後】
HOSTNAME="test123.tempdomainname.com"

2. /etc/hostsファイルの編集

次に、「/etc/hosts」の内容を編集して、ホスト名からテンポラリドメイン名に変更します。
# vi /etc/hosts

【変更前】
127.0.0.1 localhost.localdomain localhost
12.34.56.789 xxsample.jp xxsample

【変更後】
127.0.0.1 localhost.localdomain localhost
12.34.56.789 test123.tempdomainname.com test123
※テンポラリドメイン名が無いVPSシリーズの場合には、ホスト名をwww付きのドメイン名など、任意の名称に変更します。

3. networkの再起動

上記の変更を反映させるには、以下のコマンドを実行します。
# /etc/init.d/network reload

4. sendmailの設定の変更

(1) /etc/mail/local-host-namesファイルの編集

ホスト名の記述をテンポラリドメイン名に変更します。
※このファイルにホスト名の記述がなかった場合には、そのままで結構です。
# vi /etc/mail/local-host-names

【変更前】
xxsample.jp

【変更後】
test123.tempdomainname.com
※テンポラリドメイン名が無いVPSシリーズの場合には、ホスト名をwww付きのドメイン名か、IPアドレスにします。

(2) /etc/mail/virtusertableファイルの編集

# vi /etc/mail/virtusertable

最終行をコメントアウトします。
【変更前】
@xxsample.jp              error:nouser User unknown

【変更後】
#@xxsample.jp              error:nouser User unknown

(3) sendmailの再起動

sendmailの再起動を行います。
# /usr/local/sbin/vnewvirtmaps
# /usr/local/sbin/restart_sendmail

5. サーバ起動時networkファイル強制上書きスクリプトの作成

「/etc/sysconfig/network」ファイルは、RapidSiteの仕様では、サーバ起動時に初期設定の内容に自動的に初期化されてしまいます。
つまり、「1.-(2)/etc/sysconfig/networkファイルの編集」で内容を変更しても、サーバが再起動されてしまえば、変更前の内容に戻ってしまうことになります。
そこで、このカスタマイズした「netowrk」ファイルを別のディレクトリに退避しておいて、サーバ起動後に強制的に上書きしてしまうスクリプトを作成します。

(1) networkファイルの保管

まず、カスタマイズした「network」ファイルを保管するディレクトリを作成します。
ここでは、「/root/_customized_files」として、「/root」ディレクトリ直下に「_customized_files」というディレクトリを作成します。
※保管するためのディレクトリ名は任意です。また、「/root」ディレクトリでなくても構いません。
# mkdir /root/_customized_files

次にこのディレクトリに「network」ファイルをコピーします。
# cp -p /etc/sysconfig/network /root/_customized_files

(2) スクリプトファイルの作成

強制上書きスクリプトを作成します。
ここでは、「/etc/init.d/networkfileupdate」とします。
※ファイル名は任意で構いません。
# vi /etc/init.d/networkfileupdate

スクリプトの内容は以下の通りです。
※このスクリプトはサンプルですので、任意に作成して下さい。
#!/bin/sh
#
# networkfileupdate     This shell script takes care of network file update.
#
# chkconfig: 2345 99 10
# description: network file update.
#
# processname: networkfileupdate
#
HOSTNAME=test123.tempdomainname.com
 
cd /etc/sysconfig
TODAY_DATE_VAL="$(date "+%Y%m%d%H%M")"
FILENAME=network.${TODAY_DATE_VAL}
cp -p network $FILENAME
cp -p /root/_customized_files/network .
. /etc/sysconfig/network
hostname $HOSTNAME
/etc/init.d/network reload
/usr/local/sbin/restart_sendmail
※「HOSTNAME=test123.tempdomainname.com」の箇所は、実際のテンポラリードメイン名に修正して下さい。

作成したら、このスクリプトのオーナーを「root」にして自動起動にします。
# cd /etc/init.d
# chown root:root networkfileupdate
# chmod +x networkfileupdate
# chkconfig networkfileupdate on



最終更新:2013年10月24日 10:19