Image

(最終更新日: 06.11.2024)

Debian 12 Linux Mail Server (Nginx, MariaDB, PHP, Postfix (DNSBL, DKIM, SPF), Dovecot, PostfixAdmin, SpamAssassin (Base, Self-learning by Spam folder), Sieve, Quota, Fail2Ban, Roundcube (Calendar, Managesieve), Fetchmail, Imapsync)

このガイドでは、Linux Debian 12 を搭載した VPS に本格的なメール サーバーをセットアップする方法を説明します。このタスクは、Web インターフェイスを介してドメインとメールボックスを管理できる既製の企業サーバーを取得することです。基本的なメール サービス、ドメインやメール アドレスを追加できる postfixadmin 管理ツール、およびブラウザーを介してメールを便利に操作するための roundcube Web インターフェイスをインストールします。このガイドでは、root としてインストールします。通常の権限がある場合は、sudo コマンドを使用します。


メールおよび管理システムの Web インターフェースの外観:

よくある質問:

  • スパムやウイルスから保護するためにカスペルスキー セキュリティを購入したいのですが、インストールしてくれますか?

    はい、メールサーバーアセンブリと Kaspersky Security のライセンスを注文した場合、インストールと設定は無料です。 ライセンスを注文フォームに追加し、必要なメールボックスの数を指定します。

  • このサーバーには、構造の階層全体を尊重しながらすべてのレターとフォルダーを転送するための移行ツールがありますか?

    はい、imapsync がサーバーにインストールされているため、元の構造を維持したまますべてのメールボックスとすべてのフォルダーを転送できます。メールボックスの Web インターフェイスで並べ替えルール自体を構成するだけです。

  • 既製のサーバーをすぐに受け取りますか? 管理インターフェイスでメールボックスを作成した後でも機能しますか?

    はい、サーバーは完全に構成されており、動作する準備ができています。必要なのは、DNS エディターで MX レコードを登録し、ドメインのメール サーバーの IP アドレスを指定することだけです。

  • DNS レコードの正しい構成やメールボックスの移行などについて質問がある場合は、これらの設定を行うことができますか?

    はい、誰もが異なるドメイン名を持っているため、サーバーにはテスト ドメインが付属しています。たとえば、独自のドメインを追加する必要があります。それほど時間はかかりません。必要に応じて、これらの設定を行うことができます。ドメイン名を提供します。

  • サービス設定を自分で変更したり、独自のサービスをインストールしたり、たとえばメール サーバー上で複数のサイトをホストしたりできますか?

    はい、もちろんです。支払い後、説明に従って構成されたサーバー、メールボックスを管理するためのログインとパスワード、および完全な root アクセスを受け取ります。指定されたガイドにより、セットアップとテストの両方の時間が大幅に短縮され、正確にセットアップする内容が説明に記載されています。主な利点は、メール サーバー構成が制限なく動作することです。

  • 私たちはすべてのデータを手元に置きたいと考えています。これらのセットアップをすべて当社の機器で行っていただけますか?

    はい。この構成のインストールと構成は、リンク

  • ご理解のとおり、完成したアセンブリは VPS サーバーでのみ提供されますが、さまざまな理由から VDS サーバーを注文したいと考えています。

    この説明は、VDS サーバー (Debian 12) の 1 年分の料金を一度に支払うことで構成できます。セットアップには支払い日から 2 ~ 3 日かかります。

事前設定されたサーバー構成は注文フォームで入手できます。

1. ソフトウェアパッケージの更新

apt update
apt upgrade

2. LEMPのインストール

LEMPのインストール は、別のセットアップで説明されています。メールのWebインターフェース、メールボックス管理システム、設定を保存するデータベースの運用には、このバンドルが必要です。

3. メールサービスのファイアウォール設定

iptables -I INPUT 1 -p tcp --match multiport --dports 25,110,143,465,587,993,995 -j ACCEPT

ルールを保持しましょう 

apt install iptables-persistent
netfilter-persistent save

4. PostfixAdminのインストールと設定

このパッケージを使用すると、コンソールを使用せずにWebインターフェースを介してメールサーバーを管理できます。

4.1 パッケージのインストール

apt install php-mysql php-mbstring php-imap
systemctl restart php8.2-fpm
wget https://sourceforge.net/projects/postfixadmin/files/latest/download -O postfixadmin.tar.gz
mkdir /usr/share/nginx/html/postfixadmin
tar -C /usr/share/nginx/html/postfixadmin -xvf postfixadmin.tar.gz --strip-components 1
mkdir /usr/share/nginx/html/postfixadmin/templates_c
chown -R www-data:www-data /usr/share/nginx/html/postfixadmin

4.2 次にデータベースを作成しましょう:

mysql -u root -p

> CREATE DATABASE postfix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
> GRANT ALL ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'postfix1HuRaf92';
> \q

4.3 次に、以下の内容で設定ファイルを作成しましょう:

vi /usr/share/nginx/html/postfixadmin/config.local.php


$CONF['configured'] = true;
$CONF['default_language'] = 'ru';
$CONF['database_password'] = 'postfix1HuRaf92';
$CONF['emailcheck_resolve_domain']='NO';

?>

ブラウザを開き、http://host-ip/postfixadmin/public/setup.php のアドレスにアクセスしてください。

パスワードを考え出し、次に「Generate setup_password hash」のボタンをクリックしてハッシュを生成します。

生成された行全体をコピーして、次のファイルに追加します:

 vi /usr/share/nginx/html/postfixadmin/config.local.php

保存した後、http://host-ip/postfixadmin/public/setup.php のページを更新し、指定したパスワードでログインします。PostfixAdminがインストールされます。

次に、スーパーユーザー(完全な権限を持つユーザー)を追加する必要があります。Adminフィールドでは、root@mail-domain.tldの形式でユーザーを指定する必要があります。

次に、http://host-ip/postfixadmin/public/login.php のページに移動し、作成したユーザーのデータを入力します:

5. Postfixのインストールと設定

apt install postfix postfix-mysql

インストール中に、Postfixの設定ウィンドウが表示されます - 「Internet Site」を選択したままにします。

5.1 メールボックスフォルダで作業するためのグループとユーザーを作成します

groupadd -g 1024 vmail
useradd -d /home/mail -g 1024 -u 1024 vmail -m
chown vmail:vmail /home/mail

5.2 設定ファイルに変更を加えてみましょう

 vi /etc/postfix/main.cf

mydestination = localhost.$mydomain, localhost, localhost.localdomain

...

inet_protocols = ipv4

...

smtpd_tls_cert_file = /etc/ssl/mail/public.pem
smtpd_tls_key_file = /etc/ssl/mail/private.key

次に、構成ファイルの末尾に次の行を追加します:

 /etc/postfix/main.cf

virtual_mailbox_base = /home/mail
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 1024
virtual_uid_maps = static:1024
virtual_gid_maps = static:1024
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1

smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_helo_required = yes

データベースにアクセスするためのエイリアス設定を含むファイルを作成する

vi /etc/postfix/mysql_virtual_alias_maps.cf

user = postfix
password = postfix1HuRaf92
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

データベースにアクセスするためのドメイン設定を含むファイルを作成する

vi /etc/postfix/mysql_virtual_domains_maps.cf

user = postfix
password = postfix1HuRaf92
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%u'

データベースにアクセスするためのメールボックス設定を含むファイルを作成しましょう

vi /etc/postfix/mysql_virtual_mailbox_maps.cf

user = postfix
password = postfix1HuRaf92
hosts = localhost
dbname = postfix
query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'

メイン構成ファイルを開き、行の最後に以下を追加します:

vi /etc/postfix/master.cf

submission   inet  n  -  n  -  -  smtpd
  -o smtpd_tls_security_level=may
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=/var/spool/postfix/private/auth
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_local_domain=$myhostname
smtps   inet  n  -  n  -  -  smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
dovecot   unix  -  n  n  -  -  pipe
  flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}

次のコマンドを使用してセキュリティ証明書を作成しましょう: 

mkdir -p /etc/ssl/mail
openssl req -new -x509 -days 1461 -nodes -out /etc/ssl/mail/public.pem -keyout /etc/ssl/mail/private.key -subj "/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=mail-domain.tld"

この場合、自己署名証明書を作成しましたが、セキュリティ警告なしで機能させるには、SSL証明書を購入する必要があります。

最終的なサービス設定:

systemctl enable postfix
systemctl restart postfix

6. Dovecotのインストールと設定

apt install dovecot-imapd dovecot-pop3d dovecot-mysql

6.1 メール保存の設定

vi /etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:/home/mail/%d/%u/

6.2 認証の設定

vi /etc/dovecot/conf.d/10-master.conf

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }

  unix_listener auth-userdb {
    mode = 0600
    user = vmail
    group = vmail
  }
}

データベース認証設定の変更

vi /etc/dovecot/conf.d/10-auth.conf

#!include auth-system.conf.ext
!include auth-sql.conf.ext

デフォルト行をコメントアウトし、テキストに「sql」という単語が含まれる行を有効にしましょう。

6.3 SSL証明書の設定

vi /etc/dovecot/conf.d/10-ssl.conf

ssl = required
ssl_cert =
ssl_key =

ユーザーが初めてメールに認証した際に、自動的にフォルダが作成されるように設定します。

vi /etc/dovecot/conf.d/15-lda.conf

lda_mailbox_autocreate = yes

6.4 データベース接続の設定

vi /etc/dovecot/conf.d/auth-sql.conf.ext

passdb {
  …
  args = /etc/dovecot/dovecot-sql.conf.ext
}

userdb {
  …
  args = /etc/dovecot/dovecot-sql.conf.ext
}

6.5 設定ファイルに設定を追加します

vi /etc/dovecot/dovecot-sql.conf.ext

driver = mysql
connect = host=localhost dbname=postfix user=postfix password=postfix1HuRaf92
default_pass_scheme = MD5-CRYPT
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir, 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'
user_query = SELECT CONCAT('/home/mail/',LCASE(`domain`),'/',LCASE(`maildir`)), 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'

6.6 サービスが実行されるインターフェースを設定します

vi /etc/dovecot/dovecot.conf

listen = *

最終的なサービス設定

systemctl enable dovecot
systemctl restart dovecot

7. ドメインとメールボックスの設定

Webインターフェースに移動し、メールで使用するドメインを設定します: http://host-ip/postfixadmin/public/.

次に、トップメニューでドメインを追加します:

ドメインを追加した後、メールボックスを作成します。

8. WebメールサービスRoundcubeのインストールと設定

最新のLTSバージョンをダウンロードし、サーバーに展開します

wget https://github.com/roundcube/roundcubemail/releases/download/1.6.2/roundcubemail-1.6.2-complete.tar.gz
mkdir /usr/share/nginx/html/webmail
tar -C /usr/share/nginx/html/webmail -xvf roundcubemail-*.tar.gz --strip-components 1
cp /usr/share/nginx/html/webmail/config/config.inc.php.sample /usr/share/nginx/html/webmail/config/config.inc.php
chown -R www-data:www-data /usr/share/nginx/html/webmail

設定ファイルを開き、編集します

vi /usr/share/nginx/html/webmail/config/config.inc.php

$config['db_dsnw'] = 'mysql://roundcube:roundcube1Yusm24M@localhost/roundcubemail';
$config['enable_installer'] = true;

次に、以下のパラメータを見つけて空にします: $config['smtp_pass'] = '';  

この設定ファイルにタイミングを追加します:

vi /usr/share/nginx/html/webmail/config/config.inc.php

$config['drafts_mbox'] = 'Drafts';
$config['junk_mbox'] = 'Junk';
$config['sent_mbox'] = 'Sent';
$config['trash_mbox'] = 'Trash';
$config['create_default_folders'] = true;

MariaDBでroundcubemail用のデータベースを、設定ファイルに指定された通りに作成します:

mysql -uroot -p

> CREATE DATABASE roundcubemail DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
> GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'roundcube1Yusm24M';
> quit

データベースをインポートします:

mysql -uroot -p roundcubemail < /usr/share/nginx/html/webmail/SQL/mysql.initial.sql

必要なphpパッケージをインストールします:

apt install php-pear php-intl php-ldap php-net-smtp php-gd php-imagick php-zip php-curl php-dom php-xml php-mcrypt

もしphp-mcryptのインストール中にエラーが発生した場合、手動でインストールしてください

apt install php-dev libmcrypt-dev
pecl channel-update pecl.php.net
pecl install mcrypt-1.0.5

vi /etc/php/8.2/fpm/conf.d/99-mcrypt.ini

extension=mcrypt.so

phpサービスの設定:

vi /etc/php/8.2/fpm/php.ini

date.timezone = "Europe/Moscow"
post_max_size = 50M
upload_max_filesize = 50M

50メガバイトの制限は一例です。これにより、より大きな添付ファイルをメールに添付することができます。

systemctl restart php8.2-fpm

nginx自体の制限も修正します

vi /etc/nginx/nginx.conf

http {

...
client_max_body_size 50M;
...
systemctl restart nginx

次に、ブラウザで以下のリンクを使ってインストールを続行します http://host-ip/webmail/installer/

指示に従い、Roundcubeをインストールし、次のページですべての項目がOKであることを確認します。インストールが完了しました。

インストーラーを削除し、構成ファイルでインストールを無効にします

rm -rf /usr/share/nginx/html/webmail/installer
vi /usr/share/nginx/html/webmail/config/config.inc.php

$config['enable_installer'] = false;

次に、以下のリンクに従い http://host-ip/webmail/、完全なメールアドレスとパスワードを使用してWebメールにログインします。

9. 最終設定ステップ

私たちのVPSサーバーはメールでの作業ができるように設定されています。次に、ドメイン名の設定でMXレコードをIPアドレスに登録または置き換える必要があります。

DNSエディターで、次のような行になります:

エントリが登録された後、IPアドレスの逆ゾーンを指定します (PTR)

Linux Debain 12 Enterprise メールサーバーは準備が整いました。ビルドには以下のサービスおよびオプションの設定も含まれています:




No Comments Yet