データベースサーバ(MySQL)

MySQL は高速性と堅牢性を追及したマルチユーザ・マルチスレッドのSQLデータベースで、 世界で最も人気のあるフリーのリレーショナルデータベースサーバ。 Movable TypeとかNucleus等を利用する場合は各種データをMySQLデータベースに保存するようになっているので、ここではMySQLを使ったデータベースサーバを構築する。
■MySQLインストール

mysql-serverをインストール
[root@server1 ~]# yum -y install mysql-server

■MySQL設定
MySQLサーバーの文字コードとMySQLクライアントの文字コードをUTF-8にする

[root@server1 ~]# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
default-character-set = utf8   ← 追加
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
最終行に追加
[mysql]
default-character-set = utf8

■MySQL起動

MySQLの起動
[root@server1 ~]# /etc/init.d/mysqld start
MySQL データベースを初期化中:  Installing MySQL system tables...
OK
Filling help tables...
OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h server1.yokensaka.com password 'new-password'
Alternatively you can run:
/usr/bin/mysql_secure_installation
which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.
See the manual for more instructions.
You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &
You can test the MySQL daemon with mysql-test-run.pl
cd /usr/mysql-test ; perl mysql-test-run.pl
Please report any problems with the /usr/bin/mysqlbug script!
[  OK  ]
mysqld を起動中:                                           [  OK  ]

■MySQL自動起動設定

MySQLの自動起動設定
[root@server1 ~]# chkconfig mysqld on
MySQLの自動起動設定確認
[root@server1 ~]# chkconfig --list mysqld
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off
           ランレベル2~5がオンの状態であることを確認

■rootユーザへのパスワード設定
MySQLのrootユーザにはデフォルトではパスワードが設定されていないため、安全のためにパスワードを設定。

MySQLサーバーへrootユーザでログイン
[root@server1 ~]# mysql -u root
[root@server1 higo]# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.52 Source distribution
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
登録済ユーザ及びパスワードの確認
mysql> select user,host,password from mysql.user;
+------+-----------------------+----------+
| user | host                  | password |
+------+-----------------------+----------+
| root | localhost             |          | ← パスワードが設定されていない
| root | server1.yokensaka.com |          | ← パスワードが設定されていない
| root | 127.0.0.1             |          |
|      | localhost             |          |
|      | server1.yokensaka.com |          |
+------+-----------------------+----------+
5 rows in set (0.00 sec)
localhostのrootユーザにパスワードを設定
mysql> set password for root@localhost=password('パスワード');
Query OK, 0 rows affected (0.00 sec)
server1.yokensaka.comのrootユーザにパスワードを設定
mysql> set password for root@server1.yokensaka.com=password('パスワード');
Query OK, 0 rows affected (0.00 sec)
mysql> exit ← いったんログアウト
Bye
rootユーザでパスワードありでMySQLサーバーへログイン
[root@server1 ~]# mysql -u root -pパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.52 Source distribution
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
登録済ユーザ及びパスワードの確認
mysql> select user,host,password from mysql.user;
+------+-----------------------+-------------------------------------------+
| user | host                  | password                                  |
+------+-----------------------+-------------------------------------------+
| root | localhost             | *4202C8EE0ABB7FD2186E1CB0180B55C5272A8556 | ← パスワードが設定された
| root | server1.yokensaka.com | *4202C8EE0ABB7FD2186E1CB0180B55C5272A8556 | ← パスワードが設定された
| root | 127.0.0.1             |                                           |
|      | localhost             |                                           |
|      | server1.yokensaka.com |                                           |
+------+-----------------------+-------------------------------------------+
5 rows in set (0.00 sec)
mysql> exit ← いったんログアウト
Bye

※ドメインにハイフン(-)が入ってる場合はドメインをシングルクォーテーションで囲む
■匿名ユーザの削除
MySQLには匿名ユーザがデフォルトで登録されており、ユーザ名とパスワードなしでMySQLサーバーへログインできてしまうため、安全のためにこのユーザを削除。

rootユーザでパスワードありでMySQLサーバーへログイン
[root@server1 ~]# mysql -u root -pパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.1.52 Source distribution
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
登録ユーザの確認
mysql> select user,host from mysql.user;
+------+-----------------------+
| user | host                  |
+------+-----------------------+
| root | 127.0.0.1             |
|      | localhost             |
| root | localhost             |
|      | server1.yokensaka.com |
| root | server1.yokensaka.com |
+------+-----------------------+
5 rows in set (0.00 sec)
匿名ユーザを削除
mysql> delete from mysql.user where user='';
Query OK, 2 rows affected (0.00 sec)
匿名ユーザが削除されてるか確認
mysql> select user,host from mysql.user;
+------+-----------------------+
| user | host                  |
+------+-----------------------+
| root | 127.0.0.1             |
| root | localhost             |
| root | server1.yokensaka.com |
+------+-----------------------+
3 rows in set (0.01 sec)
mysql> exit ← いったんログアウト
Bye
匿名ユーザでMySQLサーバーへログインできないことを確認
[root@server1 ~]# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

■testデータベースの削除
MySQLにはデフォルトでtestという空のデータベースが登録されているが、不要のため、このデータベースを削除。

rootユーザでMySQLサーバーへログイン
[root@server1 ~]# mysql -u root -pパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.1.52 Source distribution
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
登録データベースを確認
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.00 sec)
testデータベースを削除
mysql> drop database test;
Query OK, 0 rows affected (0.00 sec)
testデータベースが削除されてるか確認
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
+--------------------+
2 rows in set (0.00 sec)
mysql> exit ← ログアウト
Bye

■MySQL確認

rootでMySQLサーバーへログイン
[root@server1 ~]# mysql -u root -pパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.52 Source distribution
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
takaデータベースへの全てのアクセス権限を持った、新規ユーザtakaを登録
mysql> grant all privileges on taka.* to taka@localhost identified by 'パスワード';
Query OK, 0 rows affected (0.00 sec)
mysql> select user from mysql.user where user='taka'; ← takaユーザ登録確認
+--------+
| user   |
+--------+
| taka   |
+--------+
1 row in set (0.00 sec)
mysql> exit ← ログアウト
Bye
takaユーザでMySQLサーバーへログイン
[root@server1 ~]# mysql -u taka -pパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.52 Source distribution
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database taka; ← takaデータベース作成
Query OK, 1 row affected (0.00 sec)
mysql> show databases; ← データベース作成確認
+--------------------+
| Database           |
+--------------------+
| information_schema |
| taka               |
+--------------------+
2 rows in set (0.00 sec)
mysql> use taka ← takaデータベースへ接続
Database changed
mysql> create table taka(num int, name varchar(50)); ← takaテーブル作成
Query OK, 0 rows affected (0.01 sec)
mysql> show tables; ← テーブル作成確認
+----------------+
| Tables_in_test |
+----------------+
| taka           |
+----------------+
1 row in set (0.00 sec)
mysql> insert into taka values(1,'データAB'); ← takaテーブルへデータ登録
Query OK, 1 row affected (0.00 sec)
mysql> select * from taka; ← データ登録確認
+------+----------+
| num  | name     |
+------+----------+
|    1 | データAB |
+------+----------+
1 row in set (0.01 sec)
mysql> update taka set name='データAB'; ← takaテーブル内データ更新
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0
mysql> select * from taka; ← データ更新確認
+------+----------+
| num  | name     |
+------+----------+
|    1 | データAB |
+------+----------+
1 row in set (0.00 sec)
mysql> delete from taka where num=1; ← takaテーブル内データ削除
Query OK, 1 row affected (0.02 sec)
mysql> select * from taka; ← データ削除確認
Empty set (0.00 sec)
mysql> drop table taka; ← testテーブル削除
Query OK, 0 rows affected (0.00 sec)
mysql> show tables; ← テーブル削除確認
Empty set (0.00 sec)
mysql> drop database taka; ← データベースtaka削除
Query OK, 0 rows affected (0.00 sec)
mysql> show databases; ← データベース削除確認
+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)
mysql> exit ← ログアウト
Bye
rootでMySQLサーバーへログイン
[root@server1 ~]# mysql -u root -pパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.52 Source distribution
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
takaユーザから全てのデータベースへのアクセス権限を剥奪
mysql> revoke all privileges on *.* from taka@localhost;
Query OK, 0 rows affected (0.00 sec)
takaユーザ削除
mysql> delete from mysql.user where user='taka' and host='localhost';
Query OK, 1 row affected (0.03 sec)
takaユーザ削除確認
mysql> select user from mysql.user where user='taka';
Empty set (0.00 sec)
mysql> flush privileges; ← takaユーザの削除をMySQLサーバーへ反映
Query OK, 0 rows affected (0.02 sec)
mysql> exit ← ログアウト
Bye

■文字セットの確認
MySQLを使ったブログ等が文字化けしたときは、以下のコマンドでサーバーが持っている文字セットとクライアントが持っている文字セットを確認できる。

[root@server1 ~]# mysql -u root -pパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 22
Server version: 5.1.52 Source distribution
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show variables like 'character\_set\_%';
+--------------------------+--------+
| Variable_name            | Value  |
+--------------------------+--------+
| character_set_client     | utf8   |
| character_set_connection | utf8   |
| character_set_database   | utf8   |
| character_set_filesystem | binary |
| character_set_results    | utf8   |
| character_set_server     | utf8   |
| character_set_system     | utf8   |
+--------------------------+--------+
7 rows in set (0.00 sec)

クライアント側の設定が反映される項目
character_set_client
character_set_connection
character_set_results
サーバー側の設定が反映される項目
character_set_database
character_set_server
■Movable Typeの初期設定
Movable Typeのブログデータを保存するデータベースの初期設定を行います。

rootでMySQLサーバーへログイン
[root@server1 ~]# mysql -u root -pパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.52 Source distribution
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
「mt」というデータベースを作成
mysql> create database mt;
Query OK, 1 row affected (0.01 sec)
管理DBをデフォルト(管理をカレント)
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
「mt」というデータベースにログインするユーザー名とパスワードを設定
mysql> grant usage on mt.* to higo@localhost identified by 'パスワード';
Query OK, 0 rows affected (0.00 sec)
「mt」というデータベースに対してすべての権限を「higo」に許す
mysql> grant all on mt.* to higo@localhost;
Query OK, 0 rows affected (0.00 sec)
mysql> exit ← ログアウト
Bye

POP/IMAPサーバ(Dovecot)

Postfixをインストールしただけでは、メールの読み出しは出来ない。 Postfixはメールを配信するためのSMTPサーバーとしての機能しか持たない。ここではdovecotをインストールすることにより、POP3/IMAP4どちらでもメールを読み出せるようにする。
■dovecotのインストール
dovecotは高セキュリティー性を重要視して開発されたPOP3/IMAP4サーバーソフトウェアー。

[root@server1 ~]# yum -y install dovecot

■dovecotの設定ファイルの編集
dovecotはPOP3/IMAP4どちらにも対応している。しかしインストールした時点では、IMAP4サーバーとしてしか動作できない。そこでPOP3サーバーとしてもメールが読み出せるように、設定ファイルを編集。

[root@server1 ~]# vi /etc/dovecot/dovecot.conf ← dovecot.confを開く
Protocols we want to be serving.
#protocols = imap pop3 lmtp
↓
protocols = imap pop3 lmtp ← #を外す
# Space separated list of trusted network ranges. Connections from these
# IPs are allowed to override their IP addresses and ports (for logging and
# for authentication checks). disable_plaintext_auth is also ignored for
# these networks. Typically you'd specify your IMAP proxy servers here.
#login_trusted_networks =
disable_plaintext_auth = no ← プレインテキストのパスワード認証(追記)
メールボックス格納形式をMaildir形式とする
[root@server1 ~]# vi /etc/dovecot/conf.d/10-mail.conf
#   mail_location = maildir:~/Maildir
#   mail_location = mbox:~/mail:INBOX=/var/mail/%u
#   mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
#
# <doc/wiki/MailLocation.txt>
#
#mail_location =
↓
mail_location = maildir:~/Maildir ← #を外し maildir:~/Maildirを追記

■dovecotの起動

[root@server1 ~]# /etc/rc.d/init.d/dovecot start
Dovecot Imap を起動中:                                     [  OK  ]
dovecotの自動起動設定
[root@server1 ~]# chkconfig dovecot on
dovecotの自動起動設定確認
[root@server1 ~]# chkconfig --list dovecot
dovecot         0:off   1:off   2:on    3:on    4:on    5:on    6:off
                (ランレベル2~5のonを確認)

POP/IMAPサーバを使うには、ルーターの設定が必要なので、110番(POPの場合)または143番(IMAPの場合)のポートを開ける。
■ ポートチェック【ポート開放確認】
「管理しているサーバーが外部から接続アクセスできるか?」「ポートは開放されているか?」「portは閉じているか?」「ルータのポートは開放されているか」等の
ポートチェック・ポートの疎通確認テストはこちらで
■メールアドレスの作成
メールアドレスは新しくユーザーを追加することにより作成可能だが、メールのみ使用するユーザーが telnetやsshを使える状態にしておくのは望ましいことではない。 useraddに -sオプションを付けてシェルを/sbin/nologinに設定することでログインできなくなる。
t-higoというメールアドレスを追加したい場合は、以下のコマンドを実行。

[root@server1 ~]# useradd -s /sbin/nologin t-higo

■ユーザーt-higoのパスワードを設定

[root@server1 ~]# passwd t-higo
Changing password for user t-higo.
New UNIX password: ← パスワードを入力(表示されない)
BAD PASSWORD: it is based on a (reversed) dictionary word
Retype new UNIX password: ← 再度同じパスワードを入力
passwd: all authentication tokens updated successfully.
これで以下のようなメールアドレスが使用可能となる。
メールアドレス   t-higo@yokensaka.com

■セキュリティレベルの設定
CentOSのインストールに時ファイアウォールを有効にした場合は、メールサーバーへのアクセスは出来ない。そこで、セキュリティーレベルを変更して、SMTPサーバー及びPOPサーバー、IMAPサーバーへアクセスできるようにする。 X Window Systemで起動し「アプリケーション・メニュー」から「システム設定」-「セキュリティレベル」を選択して「セキュリティレベルの設定ツール」を起動する。メールの送受信を可能にするには、「セキュリティレベル」で「ファイアウォールを有効にする」を選択し、「信頼できるサービス」の「メール(SMTP)」にチェックをし、「他のポート」に「110:tcp,110:udp,143:udp,993:tcp,993:udp,995:tcp,995:udp」と入力する。

SMTPサーバ(Postfix)

メールサーバーを構築するためには、まずメール配送を行うためのSMTPサーバーが必要となる。 SMTPサーバーとして動作するソフトウェアの代表的なものにはPostfix、sendmail、qmailがある。 Postfixはsendmailやqmailより後に開発されたため、それぞれの良い部分を反映して開発されており、簡単に設定することが可能なので、ここではsendmailとの互換性が優れているPostfixを使用する。
■Postfixのインストール

[root@server1 ~]# yum -y install postfix

■Postfixの設定
Postfixの基本的な設定は、/etc/postfix/main.cfで行う

[root@server1 ~]# vi /etc/postfix/main.cf ← viエディタでmain.cfを開く
# The myhostname parameter specifies the internet hostname of this
# mail system. The default is to use the fully-qualified domain name
# from gethostname(). $myhostname is used as a default value for many
# other configuration parameters.
#
#myhostname = host.domain.tld
↓
myhostname = server1.yokensaka.com ← #を外して、サーバーのホスト名を設定
#myhostname = virtual.domain.tld
# The mydomain parameter specifies the local internet domain name.
# The default is to use $myhostname minus the first component.
# $mydomain is used as a default value for many other configuration
# parameters.
#
#mydomain = domain.tld
↓
mydomain = yokensaka.com ← #を外して、ドメイン名を設定
# For the sake of consistency between sender and recipient addresses,
# myorigin also specifies the default domain name that is appended
# to recipient addresses that have no @domain part.
#
#myorigin = $myhostname
#myorigin = $mydomain
↓
myorigin = $mydomain ← #を外して、設定を有効に
      (メールアドレスの「@」以下に付加する文字列を指定)
# See also the proxy_interfaces parameter, for network addresses that
# are forwarded to us via a proxy or network address translator.
#
# Note: you need to stop/start Postfix when this parameter changes.
#
メールの受信を許可するネットワークインターフェースを設定
#inet_interfaces = all
↓ #を外して、設定を有効にする(自サーバーからのメールだけを受信する場合は設定しない)
inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
inet_interfaces = localhost
↓ 行頭に#を追加(自サーバーからのメールだけを受信する場合は設定しない)
#inet_interfaces = localhost
# Specify a list of host or domain names, /file/name or type:table
# patterns, separated by commas and/or whitespace. A /file/name
# pattern is replaced by its contents; a type:table is matched when
# a name matches a lookup key (the right-hand side is ignored).
# Continue long lines by starting the next line with whitespace.
#
# See also below, section "REJECTING MAIL FOR UNKNOWN LOCAL USERS".
#
受信したメールを拒否するかどうかを設定
mydestination = $myhostname, localhost.$mydomain, localhost
↓
#mydestination = $myhostname, localhost.$mydomain, localhost ← 行頭に#を追加
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
↓
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain ← #を外す
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
#       mail.$mydomain, www.$mydomain, ftp.$mydomain
# Specify "mynetworks_style = host" when Postfix should "trust"
# only the local machine.
#
#mynetworks_style = class
#mynetworks_style = subnet
↓
mynetworks_style = subnet ← #を外す
#mynetworks_style = host
# You can also specify the absolute pathname of a pattern file instead
# of listing the patterns here. Specify type:table for table-based lookups
# (the value on the table right-hand side is not used).
#
内部ネットワークアドレスとローカルホストアドレスを指定
#mynetworks = 168.100.189.0/28, 127.0.0.0/8
↓
mynetworks = 192.168.1.0/24, 127.0.0.0/8 ← #を外して書き換える
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
# NOTE: Postfix will not automatically forward mail for domains that
# list this system as their primary or backup MX host. See the
# permit_mx_backup restriction description in postconf(5).
#
#relay_domains = $mydestination
↓
relay_domains = $mydestination ← #を外す
# DELIVERY TO MAILBOX
#
# The home_mailbox parameter specifies the optional pathname of a
# mailbox file relative to a user's home directory. The default
# mailbox file is /var/spool/mail/user or /var/mail/user.  Specify
# "Maildir/" for qmail-style delivery (the / is required).
#
#home_mailbox = Mailbox
#home_mailbox = Maildir/
↓
home_mailbox = Maildir/ ← #を外してメールボックス格納形式をMaildir形式にする
SMTP Authを有効にする。設定ファイルの最終行まで移動して、以下のように設定を追記。
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
送信するメール1通当たりのサイズはデフォルトで10MByte、
受信するメール合計の総容量はデフォルトで50MByteに設定されている。
それぞれ5倍の50MByteと250MByteに変更するには以下を最終行へ追加。
message_size_limit = 52428800 ← 1024*1024*50=52428800
mailbox_size_limit = 262144000 ← 1024*1024*250=262144000
変更を有効にする為、postfixを再起動。
[root@server ~]# /etc/rc.d/init.d/postfix reload
postfix を再読み込み中:                                    [  OK  ]

■SMTP Auth設定
SMTP AuthではCyrus SASLと呼ばれる認証プログラムを利用している。 PostfixでCyrus SASLを利用出来るように設定する必要がある。

[root@server1 ~]# vi /etc/sasl2/smtpd.conf ← smtpd.confを開く
設定ファイルの最後に追記
mech_list: plain login cram-md5 digest-md5
saslauthdの起動
[root@server1 ~]# /etc/init.d/saslauthd start
saslauthd を起動中:                                        [  OK  ]
saslauthdの自動起動設定
[root@server1 ~]# chkconfig saslauthd on
saslauthdの自動起動設定確認
[root@server1 ~]# chkconfig --list saslauthd
saslauthd       0:off   1:off   2:on    3:on    4:on    5:on    6:off
                (ランレベル2~5のonを確認)

■root宛メールを一般ユーザ(webmaster)へ転送
システムからroot宛に送られてくるメールを、一般ユーザ(webmaster)へ転送するようにする。

管理者ユーザ宛メールのroot宛転送設定を解除
[root@server1 ~]# sed -i 's/^webmaster/#webmaster/g' /etc/aliases
管理者ユーザ宛メールのroot宛転送設定解除を確認
[root@server1 ~]# grep ^webmaster /etc/aliases ← 結果がなにも表示されないことを確認
root宛メールを管理者ユーザ(webmaster)へ転送するように設定
[root@server1 ~]# sed -i 's/^root/#root/g' /etc/aliases
root宛メールを管理者ユーザ(webmaster)へ転送するように設定
[root@server1 ~]# echo "root: webmaster" >> /etc/aliases
root宛メールが管理者ユーザ(webmaster)宛へ転送されるかの確認
[root@server1 ~]# grep ^root /etc/aliases
root: webmaster ← root宛メールが管理者ユーザ(webmaster)へ転送されるように設定されている
転送先を反映させる
[root@server1 ~]# postalias /etc/aliases

■一般ユーザー(webmaster)の作成
webmasterへメールが届くようにするためには一般ユーザー(webmaster)の作成が必要。

一般ユーザ(webmaster)を追加。
[root@server1 ~]# useradd webmaster
一般ユーザーでログインするためにはパスワードを設定する必要がある
[root@server1 ~]# passwd webmaster
パスワードの入力(入力したパスワードは表示されない)
[root@server1 ~]# passwd webmaster
ユーザー webmaster のパスワードを変更。
新しいパスワード: ← パスワード
再入力を促されるので、もう一度入力。(上記のパスワードと同じ物を入れる)
新しいパスワードを再入力してください: ← パスワード
passwd: 全ての認証トークンが正しく更新できました。

■Postfixの起動

Postfixの起動
[root@server1 ~]# /etc/rc.d/init.d/postfix restart
postfix を停止中:                                          [  OK  ]
postfix を起動中:                                          [  OK  ]

■Postfixの自動起動設定

Postfixの自動起動設定
[root@server1 ~]# chkconfig postfix on
Postfixの自動起動設定確認
[root@server1 ~]# chkconfig --list postfix
postfix         0:off   1:off   2:on    3:on    4:on    5:on    6:off
                (ランレベル2~5のonを確認)

■sendmailパスの確認
掲示板などで投稿があったらメール通知する設定をしている時は CGIのsendmailパスの設定を変更しないと送信エラーになる場合がある。

一般ユーザーでsendmailパスの確認をする
[root@server1 ~]# su - higo
[higo@server1 ~]$ which sendmail ← sendmailパスの確認
/usr/bin/which: no sendmail in (/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/higo/bin)
sendmailパスが見つからないときは
以下のようにすれば一般ユーザーでもsendmailパスがみえるようになる。
[higo@server1 ~]$ su - ← ルートになる
パスワード(P): ← ルートのパスワードを入力
[root@server1 ~]# ln -s /usr/sbin/sendmail /usr/bin/sendmail
[root@server1 ~]# su - higo ← 一般ユーザーになる
[higo@server1 ~]$ which sendmail ← sendmailパスの確認
/usr/bin/sendmail

joyful.cgiではsendmailパスがデフォルトで「/usr/lib/sendmail」になっているので、上記で確認したsendmailパス「/usr/bin/sendmail」に直さないと投稿時に送信エラーになる。

# sendmailパス(メール通知する時)
$sendmail = '/usr/lib/sendmail';
 ↓
# sendmailパス(メール通知する時)
$sendmail = '/usr/bin/sendmail'; ← libをbinに変更

root宛のメールを一般ユーザーへ転送してない場合、rootのメールが肥大化していくので注意が必要。そんな時は手動でroot宛のメールを削除する。
メール容量を確認

[root@server1 ~]# ls -la /var/spool/mail/
合計 16
drwxrwxr-x.  2 root   mail 4096  1月 17 18:41 2013 .
drwxr-xr-x. 14 root   root 4096  9月 23 20:47 2011 ..
-rw-rw----   1 clamav mail    0  9月 30 22:44 2011 clamav
-rw-rw----.  1 higo   mail    0  9月 30 20:10 2011 higo
-rw-------   1 root   mail 11710847  1月 17 18:14 2013 root
-rw-rw----.  1 rpc    mail    0  9月 30 19:53 2011 rpc
root宛のメールを削除
[root@server1 ~]# cat /dev/null > /var/mail/root
再度メール容量を確認
[root@server1 ~]# ls -la /var/spool/mail/
合計 8
drwxrwxr-x.  2 root   mail 4096  1月 17 18:41 2013 .
drwxr-xr-x. 14 root   root 4096  9月 23 20:47 2011 ..
-rw-rw----   1 clamav mail    0  9月 30 22:44 2011 clamav
-rw-rw----.  1 higo   mail    0  9月 30 20:10 2011 higo
-rw-------   1 root   mail    0  1月 17 19:45 2013 root
-rw-rw----.  1 rpc    mail    0  9月 30 19:53 2011 rpc

サーバー管理のレポート送信先を変更
ファイルの末尾の記述を以下のように修正

[root@server1 ~]# vi /etc/aliases
# Person who should get root's mail
#root:     marc
 ↓
root:           ****@******.co.jp ← #を外して送信先メールアドレスを記述
転送先を反映させる
[root@server1 ~]# postalias /etc/aliases

※SMTPサーバーを使うには、ルーターの設定が必要なので25番のポートを開ける。
■ ポートチェック【ポート開放確認】
「管理しているサーバーが外部から接続アクセスできるか?」「ポートは開放されているか?」「portは閉じているか?」「ルータのポートは開放されているか」等の
ポートチェック・ポートの疎通確認テストはこちらで
Postfixをインストールしただけでは、メールの読み出しは出来ない。 Postfixはメールを配信するためのSMTPサーバーとしての機能しか持たないので、dovecotをインストールすることにより、POP3/IMAP4どちらでもメールを読み出せるようにする。

MySQL管理(phpMyAdmin)

phpMyAdminはWebブラウザからMySQLデータベースを管理するためのPHPで記述されたソフトウェア。WebブラウザからMySQLのテーブル操作、インポート・エクスポートすることが出来る。
■ phpMyAdminインストール
こちらで最新版 を確認すること
(最新版を確認してダウロード 11/09/19 時点では phpMyAdmin 3.4.5)

[root@server1 ~]# wget http://prdownloads.sourceforge.net/phpmyadmin/phpMyAdmin-3.4.5-all-languages.tar.bz2
ダウンロードしたphpMyAdminを展開
[root@server1 ~]# tar jxvf phpMyAdmin-3.4.5-all-languages.tar.bz2
古いphpMyAdminを削除
[root@server1 ~]# rm -rf /var/www/phpmyadmin
phpMyAdmin展開先ディレクトリを所定の場所へコピー
[root@server1 ~]# mv phpMyAdmin-3.4.5-all-languages/ /var/www/phpmyadmin
ダウンロードしたphpMyAdminを削除
[root@server1 ~]# rm -f phpMyAdmin-3.4.5-all-languages.tar.bz2

■ php-mysqlインストール
phpMyAdminはPHPで動作するため、PHPからMySQLデータベースへアクセスするためのパッケージ「php-mysql」をインストールする

[root@server1 ~]# yum -y install php-mysql

■ mbstringモジュールインストール
phpMyAdmin は mbstring 拡張なしでは文字列を正確に分割することができないのでmbstringモジュールをインストールする

[root@server1 ~]# yum -y install php-mbstring

■ phpMyAdmin設定

phpmyadmin/config.sample.inc.phpを名前変更して/var/www/phpmyadmin/の直下にコピー
[root@server1 ~]# cp -p /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php
設定ファイルのパーミッションを変更
[root@server1 ~]# chmod 660 /var/www/phpmyadmin/config.inc.php
設定ファイル編集
[root@server1 ~]# vi /var/www/phpmyadmin/config.inc.php
* This is needed for cookie based authentication to encrypt password in
* cookie
*/
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
↓
$cfg['blowfish_secret'] = '***********'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ ← 46文字以内の適当な文字列を指定
※上記はロiグイン時のパスワード暗号化の際に内部的に利用されるパスフレーズであり、ユーザに入力要求されるものではない
phpMyAdminの所有者を変更
[root@server1 ~]# chown -R root.apache /var/www/phpmyadmin/

■ Apache設定
phpMyAdmin用Apache設定ファイル作成

内部と特定の外部IPからのみアクセスできるように指定する
[root@server1 ~]# vi /etc/httpd/conf.d/phpmyadmin.conf
Alias /phpmyadmin /var/www/phpmyadmin
<Location /phpmyadmin>
Order deny,allow
Deny from all
Allow from 127.0.0.1 ← サーバー自身からのアクセスを許可
Allow from 192.168.1. ← 内部ネットワークからのアクセスを許可
Allow from xxx.xxx.xxx.xxx ← 特定の外部IP(xxx.xxx.xxx.xxx)からのアクセスを許可
</Location>
[root@server1 ~]# /etc/rc.d/init.d/httpd restart ← Apache設定反映
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

会社等からアクセスする場合、自分の会社の接続環境(IPアドレス)を調べ、/etc/hosts.allowへ登録する必要がある。そんな時は診断くんで確認できる。
■ phpMyAdmin確認
http://サーバー名/phpmyadmin/へアクセスして、phpMyAdminのログイン画面が表示されること
MySQLに登録されているアカウントでログインできること
http://サーバー名/phpmyadmin/へアクセスしてみると
※「mcrypt 拡張がありません。PHP の設定をチェックしてみてください。」というエラーメッセージが出たので、 php-mcryptをインストール。
■ php-mcryptをインストール

[root@server1 ~]# yum install php-mcrypt

■ Apacheの再起動

[root@server1 ~]# /etc/rc.d/init.d/httpd restart

■ PHP の初期設定の変更
リストアで利用できるバックアップデータの最大サイズは2,048KB と書かれているとおり、 デフォルト では2 MB になっている。これはphpMyAdminの制限ではなく、 PHP の初期設定での制限。 これを変更するには、 “/etc/php.ini” を開き、 “upload_max_filesize” ディレクティブ を修正。
/etc/php.iniを cp コマンドでバックアップを作成してから作業するようにする。

[root@server1 ~]# cp -p /etc/php.ini /etc/php.ini.org
[root@server1 ~]# vi /etc/php.ini
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
;upload_tmp_dir =
; Maximum allowed size for uploaded files.
upload_max_filesize = 2M
↓
upload_max_filesize = 30M ← 30Mに変更