AmazonLinux で メールサーバーを作る(その4)

今回は微調整。


・Apache 用 document root のパーミッション
Apache 用のドキュメントルートにファイルを配備する時、配備するユーザ(dev-user:dev-user) が読み書きでき、Apache (apache:apache) は読み込みのみできるようにしたい。それ以外(others)は読み書きできないようにするのが理想。
cd /var/www/htdocs
sudo chmod u=rwx,g=rxs,o= .
sudo chown dev-user:apache .
ディレクトリに対して chmod g+s とすると、そのディレクトリにファイルやディレクトリが作成された時に、そのグループが引き継がれるらしいです。ただし、権限ビットは引き継がれない模様…。
※もっと柔軟な引継ぎ設定が出来ると良いのだけれど…。

これで、(一応)dev-user が /var/www/htdocs/ にファイルやディレクトリを作成しても、Apache が読み込みできようになります。
Others が読み込みできてしまうのは、dev-user 自身で chmod og= * …と してもらう必要がありますが。

もうちょっとウマイ方法を考えたい…けれども、今はコレでヨシとしておきます。



・dev-user のパスワード設定
dev-user というLinux アカウントを作成していますが、パスワードが何だったか忘れた(というか設定した記憶が無い)ので、再設定しておきます。
$ sudo passwd  dev-user 


・phpからメール送信
phpからメール送信できるように設定してみます。
以下のような php ファイルを mail.php という名前で Apache のドキュメントルートに配備します。
<?php
mb_send_mail( 'abcdefg@~.no-ip.biz', 'SUBJECT', 'MESSAGE BODY' );
echo 'Sent a mail.';
まずはコマンドラインで実行…。
$ php -f mail.php
PHP Fatal error:  Call to undefined function mb_send_mail() in /var/www/~/mail.php on line 2
何故…。

しかし、この手のエラーには もう慣れました(^^; AmazonLinux(きっと、基本はCentOS)は 便利な機能は デフォルトではインストールされていないのでしょう。
/etc/php.ini を見る限り、「sendmail_path = /usr/sbin/sendmail -t -i 」という設定記述があるため、メール部分の問題ではないと思われます。
そうなると、mb~ のマルチバイト文字用関数群の設定と思われますが…。
やはり /etc/php.ini 側の mb~ 系の設定記述は(コメントアウトされているものの)存在します。
…ということは、yum でインストールされるパッケージが足りないと考えられます。

yum search mbstring とすると、以下のようなモジュールが見つかります。
php-mbstring.i686 : A module for PHP applications which need multi-byte string handling
これを sudo yum install php-mbstring.i686 としてインストールしてから、再度 mail.php を実行してみます。
$ php -f mail.php
Sent a mail.

$ ls -la ~/maildir/new
total 12
drwx------ 2 dev-user dev-user 4096 Aug  7 23:31 .
drwx------ 5 dev-user dev-user 4096 Aug  6 18:55 ..
-rw------- 1 dev-user dev-user  637 Aug  7 23:31 1375885875.Vca01I20b22M211522.ip-10-150-161-211
バッチリ送られました。


今回はここまで。