サーバー設定 · 8 min read · Nov 01, 2025
完璧なサーバー CentOS 7.2 と Apache、Postfix、Dovecot、Pure-FTPD、BIND および ISPConfig 3.1 - ページ 2
7 Dovecot のインストール
Dovecot は次のようにインストールできます:
yum -y install dovecot dovecot-mysql dovecot-pigeonhole空の dovecot-sql.conf ファイルを作成し、シンボリックリンクを作成します:
touch /etc/dovecot/dovecot-sql.conf
ln -s /etc/dovecot/dovecot-sql.conf /etc/dovecot-sql.conf次に、システム起動リンクを作成し、Dovecot を起動します:
systemctl enable dovecot
systemctl start dovecot8 Postfix のインストール
Postfix は次のようにインストールできます:
yum -y install postfix次に、Sendmail をオフにし、Postfix と MariaDB (MySQL) を起動します:
systemctl enable mariadb.service
systemctl start mariadb.servicesystemctl stop sendmail.service
systemctl disable sendmail.service
systemctl enable postfix.service
systemctl restart postfix.serviceSendmail を無効にすることで、サーバーにインストールされている場合に起動しないようにします。したがって、エラーメッセージ “Failed to issue method call: Unit sendmail.service not loaded.” は無視できます。
9 Getmail のインストール
Getmail は次のようにインストールできます:
yum -y install getmail10 MySQL パスワードの設定と phpMyAdmin の構成
MySQL root アカウントのパスワードを設定します:
mysql_secure_installation[root@server1 tmp]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!MariaDB にログインしてセキュリティを確保するには、現在の
root ユーザーのパスワードが必要です。MariaDB をインストールしたばかりで、
まだ root パスワードを設定していない場合、パスワードは空白になりますので、
ここでは Enter を押してください。Enter current password for root (enter for none):
OK, successfully used password, moving on...root パスワードを設定することで、適切な認証なしに誰も MariaDB
root ユーザーにログインできなくなります。
Set root password? [Y/n] <-- ENTER
New password: <-- yourrootsqlpassword
Re-enter new password: <-- yourrootsqlpassword
Password updated successfully!
Reloading privilege tables..
... Success!
デフォルトでは、MariaDB のインストールには匿名ユーザーがあり、誰でも
ユーザーアカウントを作成せずに MariaDB にログインできます。これはテスト用にのみ
意図されており、インストールを少しスムーズにするためのものです。
本番環境に移行する前に、これらを削除する必要があります。
Remove anonymous users? [Y/n] <-- ENTER
... Success!
通常、root は 'localhost' からのみ接続を許可されるべきです。
これにより、誰かがネットワークから root パスワードを推測できなくなります。
Disallow root login remotely? [Y/n] <-- ENTER
... Success!
デフォルトでは、MariaDB には誰でもアクセスできる 'test' という名前のデータベースがあります。
これもテスト用にのみ意図されており、本番環境に移行する前に削除する必要があります。
Remove test database and access to it? [Y/n] <-- ENTER
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
特権テーブルを再読み込みすることで、これまでに行ったすべての変更が
即座に適用されることを保証します。
Reload privilege tables now? [Y/n] <-- ENTER
... Success!
クリーンアップ...
すべて完了しました!上記のすべての手順を完了した場合、あなたの MariaDB
インストールは今や安全であるべきです。
MariaDB をご利用いただきありがとうございます!
[root@server1 tmp]#次に、phpMyAdmin を構成します。Apache の設定を変更して、phpMyAdmin が localhost からだけでなく接続を許可するようにします(”Require ip” の 2 行をコメントアウトし、
nano /etc/httpd/conf.d/phpMyAdmin.conf# phpMyAdmin - Web based MySQL browser written in php
#
# Allows only localhost by default
#
# But allowing phpMyAdmin to anyone other than localhost should be considered
# dangerous unless properly secured by SSL
Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin
# Apache 2.4
# Require ip 127.0.0.1
# Require ip ::1
Require all granted
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
次に、phpMyAdmin の認証を cookie から http に変更します:
nano /etc/phpMyAdmin/config.inc.php[...]
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'http';
[...]次に、Apache のシステム起動リンクを作成し、起動します:
systemctl enable httpd.service
systemctl restart httpd.serviceこれで、ブラウザを http://server1.example.com/phpmyadmin/ または http://192.168.1.100/phpmyadmin/ に向け、ユーザー名 root と新しい root MySQL パスワードでログインできます。
11 Amavisd-new、SpamAssassin、および ClamAV のインストール
amavisd-new、SpamAssassin、および clamav をインストールするには、次のコマンドを実行します:
yum -y install amavisd-new spamassassin clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd unzip bzip2 perl-DBD-mysqlfreshclam 構成ファイル /etc/freshclam.conf を編集します。
nano /etc/freshclam.confそして、”Example” の行をコメントアウトします。
[....]
# Example
[....]次に、freshclam、amavisd、および clamd.amavisd を起動します:
sa-update
freshclam
systemctl enable amavisd.service
systemctl start amavisd.service
systemctl start [email protected]12 mod_php、mod_fcgi/PHP5、PHP-FPM を使用した Apache のインストール
ISPConfig 3 では、mod_php、mod_fcgi/PHP5、cgi/PHP5、および suPHP をウェブサイトごとに使用できます。
mod_php5、mod_fcgid、および PHP5 を使用して Apache2 を次のようにインストールできます:
yum -y install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-pecl-apc php-mbstring php-mcrypt php-mssql php-snmp php-soap php-tidy curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel mod_fcgid php-cli httpd-devel php-fpm wget次に、/etc/php.ini を開きます…
nano /etc/php.ini… そして、エラーレポートを変更します(通知が表示されないように)、タイムゾーンを設定し、cgi.fix_pathinfo=1 のコメントを外します:
[...]
;error_reporting = E_ALL & ~E_DEPRECATED
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
[...]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is. For more information on PAppp.tldTH_INFO, see the cgi specs. Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting
; of zero causes PHP to behave as before. Default is 1. You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo
cgi.fix_pathinfo=1
[...]
date.timezone = 'Europe/Berlin'
[...]httpd と PHP-FPM を起動時に開始するように有効にし、PHP-FPM サービスを起動します。
systemctl start php-fpm.service
systemctl enable php-fpm.service
systemctl enable httpd.service最後に、Apache を再起動します:
systemctl restart httpd.serviceこれで、Let’s encrypt のサポートを追加します。
mkdir /opt/certbot
cd /opt/certbot
wget https://dl.eff.org/certbot-auto
chmod a+x ./certbot-auto次に、certboot-auto コマンドを実行すると、ソフトウェアとその依存関係がダウンロードおよびインストールされます。
./certbot-autoコマンドは “no names were found in your configuration files” と言い、続行するかどうかを尋ねますので、ここでは “no” を選択してください。certs は ispconfig によって作成されます。

13 mod_python のインストール
apache モジュール mod_python は RPM パッケージとしては利用できないため、ソースからコンパイルします。最初のステップは、python 開発ファイルをインストールし、現在の mod_python バージョンを tar.gz ファイルとしてダウンロードすることです。
yum -y install python-develcd /usr/local/src/
wget http://dist.modpython.org/dist/mod_python-3.5.0.tgz
tar xfz mod_python-3.5.0.tgz
cd mod_python-3.5.0次に、モジュールを構成してコンパイルします。
./configure
make
make installそして、apache でモジュールを有効にします。
echo 'LoadModule python_module modules/mod_python.so' > /etc/httpd/conf.modules.d/10-python.conf
systemctl restart httpd.service14 PureFTPd のインストール
PureFTPd は次のコマンドでインストールできます:
yum -y install pure-ftpd次に、システム起動リンクを作成し、PureFTPd を起動します:
systemctl enable pure-ftpd.service
systemctl start pure-ftpd.serviceこれで、PureFTPd を構成して FTP および TLS セッションを許可します。FTP は非常に安全でないプロトコルであり、すべてのパスワードとすべてのデータが平文で転送されます。TLS を使用することで、通信全体を暗号化でき、FTP をはるかに安全にします。
TLS には OpenSSL が必要です。OpenSSL をインストールするには、次のように実行します:
yum install openssl/etc/pure-ftpd/pure-ftpd.conf を開きます…
nano /etc/pure-ftpd/pure-ftpd.confFTP および TLS セッションを許可する場合は、TLS を 1 に設定します:
[...]
# This option can accept three values :
# 0 : disable SSL/TLS encryption layer (default).
# 1 : accept both traditional and encrypted sessions.
# 2 : refuse connections that don't use SSL/TLS security mechanisms,
# including anonymous sessions.
# Do _not_ uncomment this blindly. Be sure that :
# 1) Your server has been compiled with SSL/TLS support (--with-tls),
# 2) A valid certificate is in place,
# 3) Only compatible clients will log in.
TLS 1
[...]TLS を使用するには、SSL 証明書を作成する必要があります。私はそれを /etc/ssl/private/ に作成しますので、まずそのディレクトリを作成します:
mkdir -p /etc/ssl/private/その後、次のようにして SSL 証明書を生成できます:
openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pemCountry Name (2 letter code) [XX]: <– あなたの国名を入力してください (例: “DE”).
State or Province Name (full name) []: <– あなたの州または省名を入力してください。
Locality Name (eg, city) [Default City]: <– あなたの市名を入力してください。
Organization Name (eg, company) [Default Company Ltd]: <– あなたの組織名を入力してください (例: あなたの会社名)。
Organizational Unit Name (eg, section) []: <– あなたの組織単位名を入力してください (例: “IT 部門“).
Common Name (eg, your name or your server’s hostname) []: <– システムの完全修飾ドメイン名を入力してください (例: “server1.example.com”).
Email Address []: <– あなたのメールアドレスを入力してください。
SSL 証明書の権限を変更します:
chmod 600 /etc/ssl/private/pure-ftpd.pem最後に、PureFTPd を再起動します:
systemctl restart pure-ftpd.serviceこれで完了です。FTP クライアントを使用して接続を試みることができますが、FTP クライアントを TLS を使用するように構成する必要があります。
15 BIND のインストール
BIND は次のようにインストールできます:
yum -y install bind bind-utils haveged既存の /etc/named.conf ファイルのバックアップを作成し、新しいファイルを次のように作成します:
cp /etc/named.conf /etc/named.conf_bak
cat /dev/null > /etc/named.conf
nano /etc/named.conf// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
allow-recursion {"none";};
recursion no;
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.conf.local";/etc/named.conf の最後に含まれるファイル /etc/named.conf.local を作成します (/etc/named.conf.local は後で ISPConfig によって DNS ゾーンを作成するときにポピュレートされます):
touch /etc/named.conf.local次に、起動リンクを作成し、BIND を起動します:
systemctl enable named.service
systemctl start named.service16 Webalizer および AWStats のインストール
AWStats は次のようにインストールできます:
yum -y install awstats perl-DateTime-Format-HTTP perl-DateTime-Format-BuilderWebalizer はソースからコンパイルする必要があります。
yum install -y libpng-devel gd-devel
cd /tmp
wget ftp://ftp.mrunix.net/pub/webalizer/webalizer-2.23-08-src.tgz
tar xvfz webalizer-2.23-08-src.tgz
cd webalizer-2.23-08
./configure
make
make install17 Jailkit のインストール
Jailkit は SSH ユーザーと cronjob を chroot するために使用されます。次のようにインストールできます (重要: Jailkit は ISPConfig の前にインストールする必要があります - 後からインストールすることはできません!):
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz
tar xvfz jailkit-2.19.tar.gz
cd jailkit-2.19
./configure
make
make install
cd ..
rm -rf jailkit-2.19*18 fail2ban のインストール
これはオプションですが推奨されます。なぜなら、ISPConfig モニターがログを表示しようとするからです。
yum -y install iptables-services fail2ban fail2ban-systemd
systemctl stop firewalld.service
systemctl mask firewalld.service
systemctl disable firewalld.service
systemctl stop firewalld.service次に、/etc/fail2ban/jail.local ファイルを作成し、ssh、email および ftp サービスの監視を有効にします。
nano /etc/fail2ban/jail.localjail.local ファイルに次の内容を追加します:
[sshd]
enabled = true
action = iptables[name=sshd, port=ssh, protocol=tcp]
[pure-ftpd]
enabled = true
action = iptables[name=FTP, port=ftp, protocol=tcp]
maxretry = 3
[dovecot]
enabled = true
action = iptables-multiport[name=dovecot, port="pop3,pop3s,imap,imaps", protocol=tcp]
maxretry = 5
[postfix-sasl]
enabled = true
action = iptables-multiport[name=postfix-sasl, port="smtp,smtps,submission", protocol=tcp]
maxretry = 3次に、fail2ban のシステム起動リンクを作成し、起動します:
systemctl enable fail2ban.service
systemctl start fail2ban.service19 rkhunter のインストール
rkhunter は次のようにインストールできます:
yum -y install rkhunter20 Mailman のインストール
サーバーで Mailman を使用してメーリングリストを管理したい場合は、今すぐ mailman をインストールします。Mailman は ISPConfig によってサポートされているため、後で ISPConfig を通じて新しいメーリングリストを作成できます。
yum -y install mailmanMailman を開始する前に、最初のメーリングリストを mailman という名前で作成する必要があります:
touch /var/lib/mailman/data/aliases
postmap /var/lib/mailman/data/aliases
/usr/lib/mailman/bin/newlist mailman[root@server1 tmp]# /usr/lib/mailman/bin/newlist mailman
Enter the email of the person running the list: <– admin email address, e.g. [email protected]
Initial mailman password: <– admin password for the mailman list
To finish creating your mailing list, you must edit your /etc/aliases (or
equivalent) file by adding the following lines, and possibly running the
`newaliases’ program:
## mailman mailing list
mailman: “|/usr/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/usr/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/usr/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/usr/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/usr/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/usr/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/usr/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/usr/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/usr/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/usr/lib/mailman/mail/mailman unsubscribe mailman”
Hit enter to notify mailman owner… <– ENTER
[root@server1 tmp]# /etc/aliases をその後開きます… nano /etc/aliases … そして、次の行を追加します: [...] mailman: "|/usr/lib/mailman/mail/mailman post mailman" mailman-admin: "|/usr/lib/mailman/mail/mailman admin mailman" mailman-bounces: "|/usr/lib/mailman/mail/mailman bounces mailman" mailman-confirm: "|/usr/lib/mailman/mail/mailman confirm mailman" mailman-join: "|/usr/lib/mailman/mail/mailman join mailman" mailman-leave: "|/usr/lib/mailman/mail/mailman leave mailman" mailman-owner: "|/usr/lib/mailman/mail/mailman owner mailman" mailman-request: "|/usr/lib/mailman/mail/mailman request mailman" mailman-subscribe: "|/usr/lib/mailman/mail/mailman subscribe mailman" mailman-unsubscribe: "|/usr/lib/mailman/mail/mailman unsubscribe mailman" その後、 newaliases を実行し、Postfix を再起動します: systemctl restart postfix.service 次に、Mailman の Apache 構成ファイル /etc/httpd/conf.d/mailman.conf を開きます… nano /etc/httpd/conf.d/mailman.conf … そして、行 ScriptAlias /cgi-bin/mailman/ /usr/lib/mailman/cgi-bin/ を追加します。Alias /pipermail/ /var/lib/mailman/archives/public/ のコメントを外し、行 Alias /pipermail /var/lib/mailman/archives/public/ を追加します: # # httpd configuration settings for use with mailman. # ScriptAlias /mailman/ /usr/lib/mailman/cgi-bin/ ScriptAlias /cgi-bin/mailman/ /usr/lib/mailman/cgi-bin/ Apache を再起動します: systemctl restart httpd.service Mailman のシステム起動リンクを作成し、起動します: systemctl enable mailman.service systemctl start mailman.service ISPConfig 3 をインストールした後、次のようにして Mailman にアクセスできます: すべての Apache vhosts に対して /cgi-bin/mailman のエイリアスを使用できます(Mailman にアクセスしたいすべての vhosts では suExec と CGI を無効にする必要があります!)。つまり、リストの Mailman 管理インターフェースには http://
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。