サーバー設定 · 5 min read · Sep 30, 2025

Debian 6.0 に ISPConfig 3 を使用して Web、Email & MySQL データベースクラスタをインストール - ページ 2

次の手順は、サーバー 1 とサーバー 2 で実行する必要があります。

amavisd-new、SpamAssassin、および ClamAV をインストールするには、次のコマンドを実行します:

 apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

ISPConfig 3 のセットアップは、内部で SpamAssassin フィルターライブラリをロードする amavisd を使用するため、RAM を解放するために SpamAssassin を停止できます:

/etc/init.d/spamassassin stop
update-rc.d -f spamassassin remove

次に、Apache2、PHP5、phpMyAdmin、FCGI、suExec、Pear、および mcrypt を次のようにインストールできます:

 apt-get -y install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-curl php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libruby libapache2-mod-ruby php5-xcache libapache2-mod-perl2 sudo zip wget

次の質問が表示されます:

Web サーバーを自動的に再構成しますか: <– apache2
phpmyadmin のデータベースを dbconfig-common で構成しますか? <– いいえ

次に、Apache モジュール suexec、rewrite、ssl、actions、および include を有効にするために次のコマンドを実行します:

a2enmod suexec rewrite ssl actions include ruby dav_fs dav auth_digest

PureFTPd と quota は次のコマンドでインストールできます:

apt-get -y install pure-ftpd-common pure-ftpd-mysql quota quotatool

ファイル /etc/default/pure-ftpd-common を編集します…

vi /etc/default/pure-ftpd-common

… そして、スタートモードが standalone に設定され、VIRTUALCHROOT が true に設定されていることを確認します:

[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]

ファイル /etc/inetd.conf を編集して、inetd が ftp を起動しようとしないようにします:

vi /etc/inetd.conf

ftp stream tcp で始まる行がある場合は、それをコメントアウトします (そのようなファイルがない場合は問題ありません。/etc/inetd.conf を変更する必要はありません):

[...]
#:STANDARD: これらは標準サービスです。
#ftp    stream  tcp     nowait  root    /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper
[...]

/etc/inetd.conf を変更した場合は、inetd を再起動します:

/etc/init.d/openbsd-inetd restart

次に、PureFTPd を構成して FTP および TLS セッションを許可します。FTP は非常に安全でないプロトコルであり、すべてのパスワードとすべてのデータが平文で転送されます。TLS を使用することで、通信全体を暗号化でき、FTP をはるかに安全にします。

FTP および TLS セッションを許可するには、次のコマンドを実行します:

echo 1 > /etc/pure-ftpd/conf/TLS

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.pem

国名 (2 文字コード) [AU]: <– あなたの国名を入力します (例: “DE”).
州または県名 (フルネーム) [Some-State]: <– あなたの州または県名を入力します。
所在地名 (例: 市) []: <– あなたの市を入力します。
組織名 (例: 会社) [Internet Widgits Pty Ltd]: <– あなたの組織名を入力します (例: あなたの会社名)。
組織単位名 (例: 部門) []: <– あなたの組織単位名を入力します (例: “IT 部門“).
共通名 (例: あなたの名前) []: <– システムの完全修飾ドメイン名を入力します (例: “server1.example.com”).
メールアドレス []: <– あなたのメールアドレスを入力します。

SSL 証明書の権限を変更します:

chmod 600 /etc/ssl/private/pure-ftpd.pem

次に、PureFTPd を再起動します:

/etc/init.d/pure-ftpd-mysql restart

/etc/fstab を編集します。私のは次のようになっています (/ のマウントポイントを持つパーティションに usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 を追加しました):

vi /etc/fstab
# /etc/fstab: 静的ファイルシステム情報。
#
# 'blkid' を使用して、デバイスのユニバーサルユニーク識別子を印刷します。これは、UUID= と共に使用され、デバイスの名前をより堅牢にする方法です。
# ディスクが追加または削除されても機能します。fstab(5) を参照してください。
#
# <ファイルシステム> <マウントポイント>   <タイプ>  <オプション>       <ダンプ>  <パス>
proc            /proc           proc    defaults        0       0
# / はインストール中 /dev/sda1 にありました
UUID=92bceda2-5ae4-4e3a-8748-b14da48fb297 /               ext3    errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0       1
# スワップはインストール中 /dev/sda5 にありました
UUID=e24b3e9e-095c-4b49-af27-6363a4b7d094 none            swap    sw              0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

クォータを有効にするには、次のコマンドを実行します:

 mount -o remount /

quotacheck -avugm
quotaon -avug

BIND DNS サーバーをインストールします:

apt-get -y install bind9 dnsutils

vlogger、webalizer、および awstats をインストールします:

 apt-get -y install vlogger webalizer awstats geoip-database

その後、/etc/cron.d/awstats を開きます…

vi /etc/cron.d/awstats

… そして、そのファイル内の両方の cron ジョブをコメントアウトします:

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# 静的レポートを生成:
 #10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh 

Jailkit をインストールします: Jailkit は SSH ユーザーを chroot したい場合にのみ必要です。次のようにインストールできます (重要: Jailkit は ISPConfig の前にインストールする必要があります - その後にインストールすることはできません!):

apt-get -y install build-essential autoconf automake1.9 libtool flex bison

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.14.tar.gz
tar xvfz jailkit-2.14.tar.gz
cd jailkit-2.14
./configure
make
make install
cd ..
rm -rf jailkit-2.14*

fail2ban をインストールします: これはオプションですが推奨されます。なぜなら、ISPConfig モニターはログを表示しようとするからです:

apt-get install fail2ban

fail2ban が PureFTPd と Dovecot を監視するようにするには、ファイル /etc/fail2ban/jail.local を作成します:

vi /etc/fail2ban/jail.local
[pureftpd]
enabled  = true
port     = ftp
filter   = pureftpd
logpath  = /var/log/syslog
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

次に、次の 2 つのフィルターファイルを作成します:

vi /etc/fail2ban/filter.d/pureftpd.conf
[Definition]
failregex = .*pure-ftpd: \(.*@\) \[WARNING\] Authentication failed for user.*
ignoreregex =
vi /etc/fail2ban/filter.d/dovecot-pop3imap.conf
[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P\S*),.*
ignoreregex =

その後、fail2ban を再起動します:

/etc/init.d/fail2ban restart

SquirrelMail ウェブメールクライアントをインストールするには、次のコマンドを実行します:

apt-get install squirrelmail

次に、次のシンボリックリンクを作成します…

ln -s /usr/share/squirrelmail/ /var/www/webmail

… そして SquirrelMail を構成します:

squirrelmail-configure

Dovecot-IMAP/-POP3 を使用していることを SquirrelMail に伝える必要があります:

SquirrelMail 設定 : 読み込み: config.php (1.4.0)

メインメニュー –
1.  組織の設定
2.  サーバー設定
3.  フォルダーのデフォルト
4.  一般オプション
5.  テーマ
6.  アドレス帳
7.  今日のメッセージ (MOTD)
8.  プラグイン
9.  データベース
10.  言語

D.  特定の IMAP サーバーのための事前定義された設定を設定

C   色をオンにする
S   データを保存
Q   終了

コマンド >> <– D

SquirrelMail 設定 : 読み込み: config.php

SquirrelMail を構築している間に、いくつかのサーバーでうまく機能する設定があることがわかりました。
特定の IMAP サーバーを選択すると、このオプションはそのサーバーのための事前定義された設定を設定します。

すべてが正しいことを確認する必要があります。
これはすべてを変更するものではありません。
これにより変更される設定はわずかです。

IMAP サーバーを選択してください:
bincimap    = Binc IMAP サーバー
courier     = Courier IMAP サーバー
cyrus       = Cyrus IMAP サーバー
dovecot     = Dovecot Secure IMAP サーバー
exchange    = Microsoft Exchange IMAP サーバー
hmailserver = hMailServer
macosx      = Mac OS X Mailserver
mercury32   = Mercury/32
uw          = ワシントン大学の IMAP サーバー
gmail       = Google メール (Gmail) アカウントへの IMAP アクセス

quit        = 何も変更しない
コマンド >> <– dovecot

SquirrelMail 設定 : 読み込み: config.php

SquirrelMail を構築している間に、いくつかのサーバーでうまく機能する設定があることがわかりました。
特定の IMAP サーバーを選択すると、このオプションはそのサーバーのための事前定義された設定を設定します。

すべてが正しいことを確認する必要があります。
これはすべてを変更するものではありません。
これにより変更される設定はわずかです。

IMAP サーバーを選択してください:
bincimap    = Binc IMAP サーバー
courier     = Courier IMAP サーバー
cyrus       = Cyrus IMAP サーバー
dovecot     = Dovecot Secure IMAP サーバー
exchange    = Microsoft Exchange IMAP サーバー
hmailserver = hMailServer
macosx      = Mac OS X Mailserver
mercury32   = Mercury/32
uw          = ワシントン大学の IMAP サーバー
gmail       = Google メール (Gmail) アカウントへの IMAP アクセス

quit        = 何も変更しない
コマンド >> dovecot

imap_server_type = dovecot
default_folder_prefix = 
trash_folder = ゴミ箱
sent_folder = 送信済み
draft_folder = 下書き
show_prefix_option = false
default_sub_of_inbox = false
show_contain_subfolders_option = false
optional_delimiter = detect
delete_folder = false

続行するには Enter を押してください… <– ENTER を押す

SquirrelMail 設定 : 読み込み: config.php (1.4.0)

メインメニュー –
1.  組織の設定
2.  サーバー設定
3.  フォルダーのデフォルト
4.  一般オプション
5.  テーマ
6.  アドレス帳
7.  今日のメッセージ (MOTD)
8.  プラグイン
9.  データベース
10.  言語

D.  特定の IMAP サーバーのための事前定義された設定を設定

C   色をオンにする
S   データを保存
Q   終了

コマンド >> <– S

SquirrelMail 設定 : 読み込み: config.php (1.4.0)

メインメニュー –
1.  組織の設定
2.  サーバー設定
3.  フォルダーのデフォルト
4.  一般オプション
5.  テーマ
6.  アドレス帳
7.  今日のメッセージ (MOTD)
8.  プラグイン
9.  データベース
10.  言語

D.  特定の IMAP サーバーのための事前定義された設定を設定

C   色をオンにする
S   データを保存
Q   終了

コマンド >> <– Q

次に、Squirrelmail のためのグローバルエイリアス /webmail を有効にします:

cd /etc/apache2/conf.d/
ln -s ../../squirrelmail/apache.conf squirrelmail.conf
/etc/init.d/apache2 reload

次に、/etc/apache2/conf.d/squirrelmail.conf を開きます…

vi /etc/apache2/conf.d/squirrelmail.conf

… そして、SquirrelMail にアクセスするために mod_php が使用されることを確認するために、 コンテナに次の行を追加します。ISPConfig でウェブサイトの PHP モードを選択しても関係ありません:

[...]
Alias /webmail /usr/share/squirrelmail

   Options FollowSymLinks

   AddType application/x-httpd-php .php
   php_flag magic_quotes_gpc Off
   php_flag track_vars On
   php_admin_flag allow_url_fopen Off
   php_value include_path .
   php_admin_value upload_tmp_dir /var/lib/squirrelmail/tmp
   php_admin_value open_basedir /usr/share/squirrelmail:/etc/squirrelmail:/var/lib/squirrelmail:/etc/hostname:/etc/mailname
   php_flag register_globals off


   DirectoryIndex index.php

 
# configtest へのアクセスはデフォルトで制限されており、情報漏洩を防ぎます

   order deny,allow
   deny from all
   allow from 127.0.0.1


[...]

ディレクトリ /var/lib/squirrelmail/tmp を作成します…

mkdir /var/lib/squirrelmail/tmp

… そして、それをユーザー www-data の所有にします:

chown www-data /var/lib/squirrelmail/tmp

再度 Apache をリロードします:

/etc/init.d/apache2 reload

これで完了です - /etc/apache2/conf.d/squirrelmail.conf は SquirrelMail のインストールディレクトリ /usr/share/squirrelmail を指す /squirrelmail というエイリアスを定義しています。

次のようにして、ウェブサイトから SquirrelMail にアクセスできます:

http://www.example.com/squirrelmail

ISPConfig コントロールパネルの vhost からも次のようにアクセスできます (これは ISPConfig での設定は不要です):

http://server1.example.com:8080/squirrelmail

次に、Unison をインストールします。Unison は、マスターとスレーブ間で /var/www と /var/vmail ディレクトリを同期するために使用されます。

apt-get install unison

次に、最初のサーバーに unison 構成ファイルをインストールします。

サーバー 1 で:

新しいファイル /root/.unison/default.prf を server1 に作成します…

mkdir /root/.unison
vi /root/.unison/default.prf

… そして次の内容を追加します:

# 同期のルート
root = /var
root = ssh://192.168.0.106//var/
 
# 同期するパス
path = www
path = vmail
 
# 名前とパスを無視するためのいくつかの正規表現
#ignore = Path stats    ## /var/www/stats を無視します
#ignore = Path stats/*  ## /var/www/stats/* を無視します
#ignore = Path */stats  ## /var/www/somedir/stats を無視しますが、/var/www/a/b/c/stats は無視しません
#ignore = Name *stats   ## "stats" で終わるすべてのファイル/ディレクトリを無視します
#ignore = Name stats*   ## "stats" で始まるすべてのファイル/ディレクトリを無視します
#ignore = Name *.tmp    ## 拡張子 .tmp のすべてのファイルを無視します
   
#          true に設定すると、このフラグはユーザーインターフェースが
#          矛盾しない変更に対する確認をスキップするようにします。 (より正確には、
#          ユーザーインターフェースが 1 つのエントリの伝播方向を設定し終え、次に移るとき、
#          矛盾しないすべてのエントリをスキップし、次の矛盾に直接移動します。)
auto=true
   
#          true に設定すると、ユーザーインターフェースは何の質問もせず、
#          矛盾しない変更が伝播され、矛盾はスキップされます。
batch=true
   
#          !true に設定すると、Unison は全体のレプリカが削除されたように見える場合、
#          変更を伝播する前に追加の確認を要求します。バッチフラグも設定されている場合、
#          同期は中止されます。パスの優先設定が使用される場合、
#          同じ確認がトップレベルのパスに対して要求されます。 (現時点では、このフラグは
#          テキストユーザーインターフェースにのみ影響します。) マウントポイントの優先設定も参照してください。
confirmbigdel=true
   
#          この設定が true に設定されると、Unison はファイルの変更時間と長さを
#          `擬似 inode 番号` として使用します。これにより、更新のためにレプリカをスキャンする際、
#          各ファイルの内容をすべて読み込むのではなくなります。Windows では、
#          更新によって変更時間と長さが両方とも変更されていない場合、Unison が更新を見逃す可能性があります。
#          ただし、Unison は常に変更を伝播する直前に安全な更新チェックを行うため、
#          そのような更新を他のレプリカからの変更で上書きすることはありません。したがって、
#          Windows ではほとんどの時間このスイッチを使用することが合理的であり、
#          Unison が更新を見逃した可能性がある場合は、fastcheck を false に設定して
#          一度実行することができます。デフォルト値は auto で、これにより Unison は
#          Unix レプリカでの高速チェック (安全な場合) を使用し、Windows レプリカでの遅いチェックを使用します。
#          従来の互換性のために、yes、no、および default は true、false、および auto の代わりに使用できます。
#          "高速チェック" セクションを参照してください。
fastcheck=true

#          このフラグが true に設定されると、ファイルのグループ属性が同期されます。
#          グループ名またはグループ識別子が同期されるかどうかは、
#          preference numerids に依存します。
group=true
   
#          このフラグが true に設定されると、ファイルの所有者属性が同期されます。
#          所有者名または所有者識別子が同期されるかどうかは、
#          preference extttnumerids に依存します。
owner=true
   
#          preference -prefer root を含めると、Unison は常に
#          矛盾を解決する際に root を優先します。ユーザーからの指示を求めるのではなく、
#          (root の構文は root preference と同じで、特別な値 newer と older を含みます)。
#          この設定は preferpartial preference によって上書きされます。
#          この設定は、あなたが自分のしていることを確信している場合にのみ使用するべきです!
prefer=newer
   
#          この設定が true に設定されると、テキストユーザーインターフェースは
#          エラーの場合を除いて何も印刷しません。
#          silent を true に設定すると、自動的にバッチの設定が true に設定されます。
silent=true
   
#          このフラグが true に設定されると、ファイルの変更時間 (ただしディレクトリの modtimes ではありません) が伝播されます。
times=true

同期を自動化したいので、server1.example.tld で cron ジョブを作成します:

crontab -e
*/5 * * * * /usr/bin/unison &> /dev/null
Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。