GNU/Linux >> Linux の 問題 >  >> Ubuntu

パート3:PostfixAdmin –Ubuntu20.04メールサーバーで仮想メールボックスを作成する

以前の記事では、Ubuntuで独自のメールサーバーを最初から設定する方法について説明しました。このチュートリアルシリーズのパート1とパート2では、PostfixSMTPサーバーとDovecotIMAPサーバーのセットアップ方法を学びましたが、これまでのところ、ローカルのUnixアカウントを持つユーザーの電子メールアドレスしか持つことができません。このチュートリアルでは、PostfixAdminを使用してUbuntu 20.04メールサーバーで仮想メールボックスを作成する方法を説明します。PostfixAdminは、多くのドメインとユーザーのPostfixベースのメールサーバーを構成および管理するためのオープンソースのウェブベースのインターフェースです。

仮想メールボックスを使用すると、メールアドレスごとにローカルのUnixアカウントを作成する必要はありません。会社や組織のメールサーバーを設定する場合は、ユーザーがパスワードを変更できるようにするWebベースのインターフェイスで仮想メールボックスを簡単に作成する方法を用意することをお勧めします。そこでPostfixAdminが登場します。

PostfixAdminの機能

  • メールボックス、仮想ドメイン、エイリアスを管理する
  • 休暇/不在メッセージ(個人的には、Roundcube Webメールで行う方がよいと思います)
  • エイリアスドメイン(受信者の検証を使用して1つのドメインを別のドメインに転送する)
  • ユーザーは自分のメールボックスを管理できます(エイリアス、パスワード、休暇メッセージの変更)
  • 単一のメールボックスのクォータサポートとドメインの合計クォータ
  • fetchmailの統合:元のメールアドレスから新しいメールアドレスにメールを取得できます。
  • Webインターフェイスでクリックしたくない人のためのコマンドラインクライアントpostfixadmin-cli😉

:パート3を終了すると、ローカルのUnixアカウントを電子メールアドレスとして使用できなくなります。 PostfixAdminWebインターフェイスから電子メールアドレスを作成する必要があります。

前提条件

この記事を読み続ける前に、このチュートリアルシリーズのパート1とパート2を読んでおく必要があります。他のWebサイトでメールサーバーのチュートリアルに従っている場合は、構成を削除することをお勧めします(sudo apt purge postfix dovecot-core )そして私のチュートリアルシリーズからやり直してください。そうすれば、さまざまなセットアッププロセスに混乱することはありません。

上記の要件が満たされたら、PostfixAdminをインストールして構成しましょう。

ステップ1:MariaDBデータベースサーバーをインストールする

PostfixAdminはPHPで記述されており、データベース(MySQL / MariaDB、PostgreSQL、またはSQLite)が必要です。この記事では、MySQLのドロップイン代替品であるMariaDBデータベースを使用します。これは、OracleがMySQLをクローズドソース製品に変える可能性があることを懸念しているMySQLチームの元メンバーによって開発されました。次のコマンドを入力して、Ubuntu20.04にMariaDBをインストールします。

 sudo apt install mariadb-server mariadb-client 

インストール後、MariaDBサーバーが自動的に起動します。 systemctlを使用します ステータスを確認します。

 systemctl status mariadb 

出力:

●mariadb.service-MariaDB10.3.22データベースサーバーロード済み:ロード済み(/lib/systemd/system/mariadb.service;有効;ベンダープリセット:有効)アクティブ:アクティブ(実行中)2020-04-10金曜日14:19:16 UTC; 18秒前ドキュメント:man:mysqld(8)https://mariadb.com/kb/en/library/systemd/メインPID:9161(mysqld)ステータス:「SQLリクエストを今すぐ取得しています...」タスク:31(制限:9451)メモリ:64.7M CGroup:/system.slice/mariadb.service└─9161/ usr / sbin / mysqld 

実行されていない場合は、次のコマンドで開始します:

 sudo systemctl start mariadb 

起動時にMariaDBを自動的に起動できるようにするには、

を実行します。
 sudo systemctl enable mariadb 

次に、インストール後のセキュリティスクリプトを実行します。

 sudo mysql_secure_installation 

MariaDBのrootパスワードの入力を求められたら、rootパスワードがまだ設定されていないため、Enterキーを押します。次に、 yと入力します MariaDBサーバーのルートパスワードを設定します。

次に、Enterキーを押して残りのすべての質問に答えることができます。これにより、匿名ユーザーが削除され、リモートrootログインが無効になり、テストデータベースが削除されます。このステップは、MariaDBデータベースセキュリティの基本的な要件です。 (Yが大文字になっていることに注意してください。これは、デフォルトの回答であることを意味します。)

ステップ2:Ubuntu20.04サーバーにPostfixAdminをインストールする

メールサーバーにログインします。一部のリーダーはMariaDBサーバーを使用し、他のリーダーはMySQLを使用するため、処理が複雑になります。そのため、PostfixAdminをインストールする前に、dbconfig-no-thanksをインストールします。 postfixadminを防ぐためのパッケージ データベース構成ウィザードの起動からのパッケージ。

 sudo apt install dbconfig-no-thanks 

次に、デフォルトのUbuntuソフトウェアリポジトリからPostfixAdminをインストールします。

 sudo apt install postfixadmin 

:以前にmysql-serverをインストールしたことがある場合 Ubuntuでは、PostfixAdminをインストールすると、おそらくmysql-serverが削除されます。 システムからのパッケージ。次のコマンドを実行して、再インストールできます。

 sudo apt install mysql-server 

次に、dbconfig-no-thanksを削除する必要があります パッケージ。

 sudo apt remove dbconfig-no-thanks 

次に、PostfixAdminのデータベース構成ウィザードを起動します。

 sudo dpkg-reconfigure postfixadmin 

インストール中に、PostfixAdminのデータベースを再インストールするかどうかを尋ねられます。これは単に、postfixadminという名前のデータベースを作成することを意味します 、既存のデータベースは削除されません。 Tabキーを押して、はいを選択します 。

次に、デフォルトのデータベースタイプを選択します:mysql 、MySQLまたはMariaDBを使用している場合。

次に、デフォルトの接続方法を選択します:Unix socket

次に、MySQL/MariaDBのデフォルトの認証プラグインを選択します。

Enterキーを押して、PostfixAdminのデフォルトのデータベース名を選択します。

Enterキーを押して、PostfixAdminのデフォルトのデータベースユーザー名を選択します。

その後、このユーザーのパスワードを設定する必要があります。パスワードには#を含めないでください。 文字、または後でログインできない可能性があります。


最後に、デフォルトのデータベース管理ユーザーを選択します。

PostfixAdminをインストールした後、次のコマンドを使用してMySQL/MariaDBコンソールにログインできます。 postfixadminのパスワードを入力する必要があります ユーザー。

 mysql -u postfixadmin -p 

また、次のコマンドを使用して、ユーザーがアクセスする権限を持っているデータベースを確認できます。

データベースを表示;

出力:

 + -------------------- + |データベース|+-------------------- + | information_schema || postfixadmin | + -------------------- + 2行セット(0.002秒)

デフォルトでは、postfixadmin データベースにはテーブルが含まれていません。次のコマンドを使用して、MySQL/MariaDBコンソールからログアウトできます。

 EXIT; 

インストールにより、2つの構成ファイルも作成されます:/etc/dbconfig-common/postfixadmin.conf および/etc/postfixadmin/dbconfig.inc.php 、どちらにもデータベースのユーザー名とパスワードを含むデータベースアクセス設定が含まれています。データベースタイプをmysqlから変更する必要があります mysqliへ 2つのファイルの両方で。

 sudo nano /etc/dbconfig-common/postfixadmin.conf 

変更

 dbc_dbtype ='mysql' 

 dbc_dbtype ='mysqli' 

次に、2番目のファイルを編集します。

 sudo nano /etc/postfixadmin/dbconfig.inc.php 

変更

 $ dbtype ='mysql'; 

 $ dbtype ='mysqli'; 

Webファイルは/usr/share/postfixadmin/の下にインストールされます ルートが所有するディレクトリ。 PostfixAdminにはtemplates_cが必要です ディレクトリなので、作成します。

 sudo mkdir / usr / share / postfixadmin / templates_c 

www-dataを提供する必要があります ユーザーは、次のコマンドを使用して、このディレクトリに対する権限の読み取り、書き込み、および実行を行います。

 sudo setfacl -R -m u:www-data:rwx / usr / share / postfixadmin / templates_c / 

システムがsetfaclを見つけられない場合 コマンドを実行するには、aclをインストールする必要があります パッケージ。

 sudo apt install acl 

ステップ3:PostfixAdmin用のApache仮想ホストまたはNginx構成ファイルを作成する

Apache

Apache Webサーバーを使用する場合は、PostfixAdminの仮想ホストを作成します。

 sudo nano /etc/apache2/sites-available/postfixadmin.conf 

次のテキストをファイルに入れます。 postfixadmin.example.comを置き換えます 実際のドメイン名を使用して、DNSAレコードを設定することを忘れないでください。

  ServerName postfixadmin.example.com DocumentRoot / usr / share / postfixadmin / public ErrorLog $ {APACHE_LOG_DIR} /postfixadmin_error.log CustomLog ${APACHE_LOG_DIR}/postfixadmin_access.log結合オプションFollowSymLinksAllowOverrideすべてのオプションFollowSymLinksMultiViewsAllowOverride All Order allow、deny permit from all   

ファイルを保存して閉じます。次に、次のコマンドでこの仮想ホストを有効にします。

 sudo a2ensite postfixadmin.conf 

変更を有効にするためにApacheをリロードします。

 sudo systemctl reload apache2 

これで、http://postfixadmin.example.com/setup.phpでPostfixAdminWebベースのインストールウィザードが表示されるはずです。 。

Nginx

Nginx Webサーバーを使用する場合は、PostfixAdminの仮想ホストを作成します。

 sudo nano /etc/nginx/conf.d/postfixadmin.conf 

次のテキストをファイルに入れます。 postfixadmin.example.comを置き換えます 実際のドメイン名を使用して、DNSAレコードを設定することを忘れないでください。

 server {listen 80;聞く[::]:80; server_name postfixadmin.example.com;ルート/usr/ share / postfixadmin / public /; index index.php index.html; access_log /var/log/nginx/postfixadmin_access.log; error_log /var/log/nginx/postfixadmin_error.log;場所/{try_files$ uri $ uri / /index.php; }場所〜^ /(。+ \。php)$ {try_files $ uri =404; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; / etc / nginx/fastcgi_paramsをインクルードします。 }} 

ファイルを保存して閉じます。次に、Nginx構成をテストします。

 sudo nginx -t 

テストが成功した場合は、変更を有効にするためにNginxをリロードします。

 sudo systemctl reload nginx 

これで、http://postfixadmin.example.com/setup.phpでPostfixAdminWebベースのインストールウィザードが表示されるはずです。 。

ステップ4:必須および推奨のPHPモジュールをインストールする

次のコマンドを実行して、PostfixAdminが必要または推奨するPHPモジュールをインストールします。

 sudo apt install php7.4-fpm php7.4-imap php7.4-mbstring php7.4-mysql php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4- bz2 php7.4-intl php7.4-gmp 

次に、Apacheを再起動します。 (Nginxを使用している場合は、Nginxを再起動する必要はありません。)

 sudo systemctl restart apache2 

ステップ5:HTTPSを有効にする

HTTPトラフィックを暗号化するには、Let’sEncryptから発行された無料のTLS証明書をインストールしてHTTPSを有効にします。次のコマンドを実行して、Let’s Encryptクライアント(certbot)をUbuntu20.04サーバーにインストールします。

 sudo apt install certbot 

Apacheを使用する場合は、CertbotApacheプラグインをインストールしてください。

 sudo apt install python3-certbot-apache 

そして、このコマンドを実行してTLS証明書を取得してインストールします。

 sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d postfixadmin.example.com 

Nginxを使用する場合は、CertbotNginxプラグインもインストールする必要があります。

 sudo apt install python3-certbot-nginx 

次に、次のコマンドを実行してTLS証明書を取得してインストールします。

 sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d postfixadmin.example.com 

どこ

  • --nginx :nginxプラグインを使用してください。
  • --apache :Apacheプラグインを使用してください。
  • --agree-tos :利用規約に同意します。
  • --redirect :301リダイレクトでHTTPSを強制します。
  • --hsts :すべてのHTTP応答にStrict-Transport-Securityヘッダーを追加します。ドメインに常にTLSを使用するようにブラウザを強制します。 SSL/TLSストリッピングから防御します。
  • --staple-ocsp :OCSPステープリングを有効にします。有効なOCSP応答は、TLS中にサーバーが提供する証明書にホチキス止めされます。

これで、証明書が取得され、自動的にインストールされます。これは、以下のメッセージで示されます。

ステップ6:PostfixAdminとDovecotで強力なパスワードスキームを使用する

デフォルトでは、PostfixAdminとDovecotは弱いパスワードスキームであるMD5-CRYPTを使用します。次のコマンドを使用して、Dovecotで使用可能なパスワードスキームを一覧表示できます。

 sudo doveadm pw -l <​​/ pre> 

サンプル出力:

 SHA1 SSHA512 BLF-CRYPT PLAIN HMAC-MD5 OTP SHA512 SHA RPA DES-CRYPT CRYPT SSHA MD5-CRYPT SKEY PLAIN-MD4 PLAIN-MD5 SCRAM-SHA-1 LANMAN SHA512-CRYPT CLEAR CLEARTEXT  ARGON2I ARGON2ID > SSHA256 NTLM MD5 PBKDF2 SHA256 CRAM-MD5 PLAIN-TRUNC SHA256-CRYPT SMD5 DIGEST-MD5 LDAP-MD5 

Argon2はかなり強力なパスワードスキームです。これを使用するには、PostfixAdmin構成ファイルを編集する必要があります。デフォルトは/usr/share/postfixadmin/config.inc.phpです。 、ただし、別のファイル(config.local.php)を作成できます )変更を保存して、将来、新しいバージョンのPostfixAdminがインストールされたときに上書きされないようにします。

 sudo nano /usr/share/postfixadmin/config.local.php 

Argon2パスワードスキームを使用するには、ファイルに次の行を追加します。

 <?php $ CONF ['encrypt'] ='dovecot:ARGON2I'; $ CONF ['dovecotpw'] ="/ usr / bin / doveadm pw -r 5"; if(@file_exists('/ usr / bin / doveadm')){//@openbase_dirのものを無音にします; https://github.com/postfixadmin/postfixadmin/issues/171を参照$CONF['dovecotpw'] ="/ usr / bin / doveadm pw -r 5"; #debian} 

ファイルを保存して閉じます。 /etc/postfixadmin/にシンボリックリンクを作成することもできます PostfixAdminがファイルを見つけられない場合に備えて、ディレクトリ。

 sudo ln -s /usr/share/postfixadmin/config.local.php /etc/postfixadmin/config.local.php 

手順11でDovecotのパスワードスキームを構成します。

ステップ7:Dovecotで統計を有効にする

PostfixAdminはDovecot統計を読み取る必要があります。 Dovecot構成ファイルを編集します。

 sudo nano /etc/dovecot/conf.d/10-master.conf 

このファイルの最後に次の行を追加します。

 service stats {unix_listener stats-reader {user =www-data group =www-data mode =0660} unix_listener stats-writer {user =www-data group =www-data mode =0660}} 

ファイルを保存して閉じます。次に、Webサーバーをdovecotに追加します グループ。

 sudo gpasswd -a www-data dovecot 

Dovecotを再起動します。

 sudo systemctl restart dovecot 

ステップ8:Webブラウザでのインストールを完了します

postfixadmin.example.com/setup.php Webベースのセットアップウィザードを実行します。まず、すべての依存関係がインストールされているかどうかを確認し、データベーステーブルを作成します。

次のエラーが表示された場合は、

無効なクエリ:指定されたキーが長すぎました。キーの最大長は1000バイトです

次に、コマンドラインからrootとしてMySQL/MariaDBデータベースサーバーにログインする必要があります

 sudo mysql -u root 

デフォルトの照合をutf8mb4_general_ciから変更します utf8_general_ciへ 。

 MariaDB [(none)]> alter database postfixadmin collat​​e ='utf8_general_ci'; 

MySQL / MariaDBコンソールを終了し、setup.phpページをリロードします。すべての要件が満たされたら、PostfixAdminのセットアップパスワードを作成できます。

パスワードハッシュを作成したら、/usr/share/postfixadmin/config.local.phpを開く必要があります。 ファイルを作成し、以下のようにファイルの最後にセットアップパスワードハッシュを追加します。もちろん、独自のパスワードハッシュを使用する必要があります。

次に、管理者アカウントを作成します。管理者アカウントにGmail、Yahooメール、またはMicrosoftのメールアドレスを使用しないでください。使用すると、後でログインできなくなる可能性があります。自分のドメインのメールアドレスを使用してください。メールアドレスは後でPostfixAdminで作成できます。

スーパー管理者アカウントを作成しようとしたときに次のエラーが表示された場合は、

 dovecotpwでパスワードを暗号化できません。詳細については、エラーログを参照してください

www-data ユーザーには、Let'sEncryptTLS証明書を読み取る権限がありません。これを修正するには、次のコマンドを実行して権限を付与します。

 sudo setfacl -R -m u:www-data:rx / etc /letsencrypt / live / / etc /letsencrypt/archive/ 

スーパー管理者アカウントが作成されると、postfixadmin.example.com/login.phpでPostfixAdminにログインできます。 。

ステップ9:データベース内のテーブルを確認する

PostfixAdminセットアッププロセスは、postfixadminにデータを入力します いくつかのデフォルトテーブルを持つデータベース。テーブルの名前と構造を知っておくと役に立ちます。 MySQL/MariaDBコンソールにログインします。

 sudo mysql -u root 

postfixadminを選択します データベース。

 USE postfixadmin; 

このデータベース内のすべてのテーブルを一覧表示します。

テーブルを表示;

出力:

 + ------------------------ + | Tables_in_postfixadmin | + ------------------------ + |管理者||エイリアス|| alias_domain ||構成||ドメイン|| domain_admins || fetchmail ||ログ||メールボックス||クォータ||クォータ2||休暇|| Vacation_notification | + ------------------------ + 13行セット(0.001秒)

最も重要な3つのテーブルは次のとおりです。

  • domain :メールサーバーを使用してメールを送受信しているドメインに関する情報が含まれています。
  • mailbox :ハッシュ化されたパスワードやメールファイルの場所など、すべてのメールアドレスに関する情報が含まれています。
  • alias :各メールアドレスのエイリアスが含まれています。

興味がある場合は、各テーブルに含まれる列を確認できます。たとえば、次のコマンドはdomainの列を表示します テーブル。

DESCRIBEドメイン;

出力:

 + ------------- + -------------- + ------ + ----- + ---- ----------------- + ------- + |フィールド|タイプ|ヌル|キー|デフォルト|追加|+------------- + -------------- + ------ + ----- + ----- ---------------- + ------- + |ドメイン| varchar(255)|いいえ| PRI | NULL | ||説明| varchar(255)|いいえ| | NULL | ||エイリアス| int(10)|いいえ| | 0 | ||メールボックス| int(10)|いいえ| | 0 | || maxquota | bigint(20)|いいえ| | 0 | ||クォータ| bigint(20)|いいえ| | 0 | ||輸送| varchar(255)|いいえ| | NULL | || backupmx | tinyint(1)|いいえ| | 0 | ||作成済み|日時|いいえ| | 2000-01-01 00:00:00 | ||変更|日時|いいえ| | 2000-01-01 00:00:00 | ||アクティブ| tinyint(1)|いいえ| | 1 | | + ------------- + -------------- + ------ + ----- + ------ --------------- + ------- + 

MySQL/MariaDBコンソールからログアウトします。

 EXIT; 

ステップ10:MySQL/MariaDBデータベースを使用するようにPostfixを設定する

デフォルトでは、PostfixはローカルUnixアカウントを持つユーザーにのみメールを配信します。情報がデータベースに保存されている仮想ユーザーにメールを配信するには、仮想メールボックスドメインを使用するようにPostfixを設定する必要があります。

まず、postfix-mysqlをインストールして、PostfixのMySQLマップサポートを追加する必要があります パッケージ。

 sudo apt install postfix-mysql 

次に、Postfixのメイン設定ファイルを編集します。

 sudo nano /etc/postfix/main.cf 

このファイルの最後に次の行を追加します。

 virtual_mailbox_domains =proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cfvirtual_mailbox_maps =proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf、proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cfvirtual_ proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf、proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf、proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf 

場所:

  • virtual_mailbox_domains データベースからドメイン情報を検索する方法をPostfixに指示するファイルを指します。
  • virtual_mailbox_maps データベースからメールアドレスを検索する方法をPostfixに指示するファイルを指します。
  • virtual_alias_maps データベースからエイリアスを検索する方法をPostfixに指示するファイルを指します。

dovecotを使用して受信メールを仮想ユーザーのメッセージストアに配信したいので、このファイルの最後に次の行も追加します。

 virtual_transport =lmtp:unix:private / dovecot-lmtp 

ファイルを保存して閉じます。次に、.cfを作成する必要があります 1つずつファイルします。 SQLディレクトリを作成します。

 sudo mkdir / etc / postfix / sql / 

mysql_virtual_domains_maps.cfを作成します ファイル。

 sudo nano /etc/postfix/sql/mysql_virtual_domains_maps.cf 

次のコンテンツを追加します。 passwordを置き換えます 手順2で設定したpostfixadminパスワードを使用します。

 user =postfixadminpassword =passwordhosts =localhostdbname =postfixadminquery =SELECT domain FROM domain WHERE domain ='%s' AND active ='1' #query =SELECT domain FROM domain WHERE domain ='%s'#オプションのクエリバックアップのリレーMX#query =SELECT domain FROM domain WHERE domain ='%s' AND backupmx ='0' AND active ='1' #expansion_limit =100 

mysql_virtual_mailbox_maps.cfを作成します ファイル。

 sudo nano /etc/postfix/sql/mysql_virtual_mailbox_maps.cf 

次のコンテンツを追加します。

 user =postfixadminpassword =passwordhosts =localhostdbname =postfixadminquery =SELECT maildir FROM namespace WHERE username ='%s' AND active ='1' #expansion_limit =100 

mysql_virtual_alias_domain_mailbox_maps.cfを作成します ファイル。

 sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf 

次のコンテンツを追加します。

 user =postfixadminpassword =passwordhosts =localhostdbname =postfixadminquery =SELECT maildir FROM メールボックス、alias_domain WHERE alias_domain.alias_domain ='%d'およびmailbox.username =CONCAT('%u'、'@'、alias_domain.target_domain)ANDメールボックス.active =1 AND alias_domain.active ='1' 

mysql_virtual_alias_maps.cfを作成します ファイル。

 sudo nano /etc/postfix/sql/mysql_virtual_alias_maps.cf 

次のコンテンツを追加します。

 user =postfixadminpassword =passwordhosts =localhostdbname =postfixadminquery =SELECT goto FROM alias WHERE address ='%s' AND active ='1' #expansion_limit =100 

mysql_virtual_alias_domain_maps.cfを作成します ファイル。

 sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf 

次のコンテンツを追加します。

 user =postfixadminpassword =passwordhosts =localhostdbname =postfixadminquery =SELECT goto FROM alias、alias_domain WHERE alias_domain.alias_domain ='%d' and alias.address =CONCAT('%u'、'@'、alias_domain.target_domain)AND alias .active =1 AND alias_domain.active ='1' 

mysql_virtual_alias_domain_catchall_mapsを作成します ファイル。

 sudo nano /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf 

次のコンテンツを追加します。

#はtarget-domainuser =postfixadminpassword =passwordhosts =localhostdbname =postfixadminquery =SELECT goto FROM alias、alias_domain WHERE alias_domain.alias_domain ='%d'およびalias.address =CONCAT('@'、alias_domainのキャッチオール設定を処理します。 target_domain)AND alias.active =1 AND alias_domain.active ='1' 

データベースのパスワードはプレーンテキストで保存されるため、ユーザーのpostfixとrootのみが読み取り可能である必要があります。これは、次の2つのコマンドを実行することで実行されます。

 sudo chmod 0640 / etc / postfix / sql / * sudo setfacl -R -m u:postfix:rx / etc / postfix / sql / 

次に、mydestinationの値を変更する必要があります Postfixのパラメータ。現在の値を表示します:

 postconf mydestination 

サンプル出力:

 mydestination =$ myhostname、linuxbabe.com、localhost。$ mydomain、localhost 

mydestination パラメータには、ローカルのUnixアカウントに配信される電子メールを受信するドメイン名のリストが含まれています。パート1では、apexドメイン名(linuxbabe.comなど)をmydestinationに追加しました 。仮想メールボックスを使用するため、次のコマンドを発行して、リストからapexドメイン名を削除する必要があります。

 sudo postconf -e "mydestination =\ $ myhostname、localhost。\ $ mydomain、localhost" 

それでは、Postfixのメイン設定ファイルをもう一度開きましょう。

 sudo nano /etc/postfix/main.cf 

このファイルの最後に次の行を追加します。

 virtual_mailbox_base =/ var / vmailvirtual_minimum_uid =2000virtual_uid_maps =static:2000virtual_gid_maps =static:2000 

最初の行は、メールファイルの基本的な場所を定義します。残りの3行は、Postfixが受信メールをメールボックスに配信するときに使用するユーザーIDとグループIDを定義します。ユーザーID2000とグループID2000を使用します。

ファイルを保存して閉じます。変更を有効にするには、Postfixを再起動します。

 sudo systemctl restart postfix 

次に、vmailという名前のユーザーを作成する必要があります ID2000とID2000のグループ。

 sudo adduser vmail --system --group --uid 2000 --disabled-login --no-create-home 

メールベースの場所を作成します。

 sudo mkdir / var / vmail / 

vmailを作成します 所有者として。

 sudo chown vmail:vmail / var / vmail / -R 

ステップ11:MySQL/MariaDBデータベースを使用するようにDovecotを構成する

また、データベースからユーザー情報を照会するようにDovecotIMAPサーバーを構成する必要があります。まず、次のコマンドを実行して、DovecotのMySQLサポートを追加します。

 sudo apt install dovecot-mysql 

次に、 10-mail.confを編集します ファイル。

 sudo nano /etc/dovecot/conf.d/10-mail.conf 

パート2では、次のmail_locationを使用しました 。メールメッセージはMaildirの下に保存されます 各ユーザーのホームディレクトリの下にあるディレクトリ。

 mail_location =maildir:〜/ Maildir 

現在仮想メールボックスドメインを使用しているため、mail_homeを有効にする必要があります 仮想ユーザーにはデフォルトでホームディレクトリがないため、ファイルに次の行を追加して仮想ユーザーの場合。

 mail_home =/ var / vmail /%d /%n / 

ファイルを保存して閉じます。次に、 10-auth.confを編集します ファイル。

 sudo nano /etc/dovecot/conf.d/10-auth.conf 

パート2では、auth_username_formatに次の値を使用しました 。

 auth_username_format =%n 

%n 与えられた場合、ドメインを削除します。パート2では、すべての電子メールアドレスのユーザー名にローカルUnixアカウントを使用していたため、%nを使用する必要があります。 ドメインを削除して、ユーザーが完全なメールアドレスでログインできるようにします。

現在、仮想メールボックスドメインを使用しています。つまり、すべてのメールアドレスのユーザー名にドメイン部分が含まれているため、auth_username_formatを変更する必要があります。 次のように。 %u ドメインを削除しません。これにより、ユーザーは完全なメールアドレスでログインできます。

 auth_username_format =%u 

このファイルの最後にある次の行のコメントを解除して、DovecotがMySQL/MariaDBデータベースからユーザー情報を照会できるようにします。

!include auth-sql.conf.ext 

ここで、おそらくローカルのUnixユーザーがPostfixAdminに電子メールアドレスを登録せずに電子メールを送信することを望まないでしょう。次に、先頭に#文字を追加して次の行をコメントアウトし、Dovecotがローカルの/etc/passwd または/etc/shadow ファイル。

#!include auth-system.conf.ext 

ログインの問題をデバッグするには、このファイルに次の2行を追加すると役立つ場合があります。ログインエラーは/var/log/mail.logに記録されます ファイル。 (ユーザーが問題なくログインできるようになったら、次の2行をコメントアウトできます。)

 auth_debug =yesauth_debug_passwords =yes 

ファイルを保存して閉じます。

dovecot-sql.conf.extを編集します ファイル。

 sudo nano /etc/dovecot/dovecot-sql.conf.ext 

このファイルに含める必要のあるコンテンツは次のとおりです。デフォルトでは、このファイルのすべての行がコメント化されているため、それらをコピーして下部に貼り付けるだけです。 passwordを置き換えます 手順2で設定したpostfixadminパスワードを使用します。

 driver =mysqlconnect =host =localhost dbname =postfixadmin user =postfixadmin password =passworddefault_pass_scheme =ARGON2Ipassword_query =SELECT username AS user、password FROM namespace WHERE username ='%u' AND active ='1' user_query =SELECT maildir、2000 AS uid、2000 AS gidFROMメールボックスWHEREユーザー名='%u' AND active ='1'iterate_query=ユーザー名ASユーザーFROMメールボックスを選択

Dovecotを再起動します。

 sudo systemctl restart dovecot 

ユーザーがログインしようとすると、DovecotはArgon2アルゴリズムを使用して、ユーザーが入力したパスワードからパスワードハッシュを生成し、データベースに保存されているパスワードハッシュと比較します。

ステップ12:PostfixAdminにドメインとメールボックスを追加する

管理者としてPostfixAdminWebインターフェイスにログインします。 Domain Listをクリックします タブをクリックし、New Domainを選択します ドメインを追加します。このドメインで許可されるエイリアスとメールボックスの数を選択できます。

次に、Virtual Listをクリックします タブをクリックし、Add Mailboxを選択します ドメインの新しいメールアドレスを追加します。

次に、Mozilla Thunderbirdなどのデスクトップメールクライアントを開いて、メールアカウントを追加できます。

  • [受信サーバー]セクションで、[IMAPプロトコル]を選択し、mail.your-domain.comと入力します。 サーバー名として、ポート143とSTARTTLSを選択します。 normal passwordを選択します 認証方法として。
  • 送信セクションで[SMTPプロトコル]を選択し、mail.your-domain.comと入力します サーバー名として、ポート587とSTARTTLSを選択します。 normal passwordを選択します 認証方法として。

ヒント :IMAPの場合はSSL / TLS暗号化でポート993を使用し、SMTPの場合はSSL/TLS暗号化でポート465を使用することもできます。 しない メールクライアントのSMTPポートとしてポート25を使用して、送信メールを送信します。

これで、自分の電子メールサーバーに接続し、デスクトップ電子メールクライアントで電子メールを送受信できるようになります。現在、ローカルのUnixアカウントを使用してログインすることはできません。 PostfixAdminWebインターフェイスから作成された仮想ユーザーでログインする必要があります。

トラブルシューティングのヒント

経験則として、常にメールログ(/var/log/mail.log)を確認する必要があります )エラーが発生したときにメールサーバー上で。以下は、特定のエラーとトラブルシューティングのヒントのリストです。

メールクライアントからログインできません

デスクトップメールクライアントからメールサーバーにログインできない場合は、メールサーバーをスキャンして、ポートが開いているかどうかを確認します。次のコマンドは、別のLinuxコンピューターまたはサーバーから実行する必要があることに注意してください。メールサーバーで実行すると、ポートは常に開いているように見えます。

 sudo nmap mail.your-domain.com 

そして、Dovecotが実行されているかどうかを確認します。

 systemctl status dovecot 

メールログ(/var/log/mail.log)を確認することもできます )、それはあなたにいくつかの手がかりを与えるかもしれません。 Dovecotの起動に失敗した場合、エラーは/var/log/mail.logに記録されない可能性があります。 ファイルの場合、次のコマンドを実行して何が問題なのかを確認できます。

 sudo journalctl -eu dovecot 

メールログに次のエラーが表示される場合は、.cfに正しいパスワードを設定していない可能性があります。 /etc/postfix/sql/の下のファイル ディレクトリ。

 postfix / trivial-rewrite [28494]:警告:virtual_alias_domains:proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf:テーブルルックアップproblempostfix / trivial-rewrite [28494]:警告:virtual_alias_domainsルックアップ失敗
>

メールログに次のエラーが表示される場合は、mail_location = maildir:~/Maildirを追加し忘れたことが原因です。 /etc/dovecot/conf.d/10-mail.confにあります ファイル。

 open(/ var / mail / [email protected])failed:Permissiondenied(euid =2000(vmail)egid =2000(vmail)missing + w perm:/ var / mail、私たちはグループ8(メール)、0:8モードが所有するディレクトリ=0775 

Cloudflare DNS

パート1で述べたように、Cloudflare DNSサービスを使用する場合は、メールサーバーのホスト名のDNS AレコードとAAAAレコードを作成するときにCDN(プロキシ)機能を有効にしないでください。 CloudflareはSMTPまたはIMAPプロキシをサポートしていません。

リレーアクセスが拒否されました

リレーアクセスが拒否されました」が表示された場合 メールクライアントからメールを送信しようとすると「」エラーが発生します。メールクライアントのSMTPポートとしてポート25を使用している可能性があります。さっき言ったように、ポート 587を使うべきです または465 メールクライアント(Mozilla Thunberbird、Microsoft Outlookなど)のSMTPポートとして、送信メールを送信します。ポート25は、SMTPサーバーからSMTPサーバーへの通信に使用する必要があります。

iOSメールアプリ

iOSメールアプリを使用してメールサーバーにログインし、次のエラーが発生した場合。

SMTPとIMAPの両方でSSL暗号化を適用することで修正を試みることができます。

おもしろい事実 :iOSメールアプリはIMAPポート143でSTARTTLSをサポートするのが難しいようですが、送信ポート587でSTARTTLSをサポートしています。

一時的なルックアップの失敗

メールサーバーがしばらくの間正常に機能していたが、突然メールログに次のエラーが表示された場合

 Aug 25 20:25:24 mx postfix / trivial-rewrite [3313]:警告:virtual_alias_domains:proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf:テーブルルックアップの問題Aug 25 20:25:24 mx postfix / trivial-rewrite [3313]:警告:virtual_alias_domainsルックアップの失敗8月25日20:25:24 mx postfix / subject / smtpd [3464]:NOQUEUE:拒否:451 4.3.0 <[メール保護]>:一時的なルックアップの失敗。 proto =ESMTPAug 25 20:25:24 mx postfix / submit / smtpd [3464]:一時的なルックアップの失敗

MariaDB/MySQLデータベースが何らかの理由で停止した可能性があります。次のコマンドを使用して、データベースサーバーがいつ停止したかを確認できます。

 sudo journalctl -eu mariadb 

または

 sudo journalctl -eu mysql 

この状況の一般的な原因は、サーバーのメモリが不足していることです。サーバーに十分なメモリがあるかどうかを確認してください。

 htop 

または

無料-m

ジャンクフォルダとゴミ箱フォルダを自動的に削除する

すべてのユーザーの迷惑メールフォルダにあるメールを削除するには、次のコマンドを実行できます

 sudo doveadmexpunge-メールボックスジャンクすべて

ごみ箱フォルダ内のメールを削除するには、

を実行します
 sudo doveadmexpunge-メールボックスのゴミ箱をすべて

すべてのメールをクリーンアップするよりも、迷惑メールフォルダまたはゴミ箱フォルダに2週間以上保存されているメールをクリーンアップする方がよいと思います。

 sudo doveadmexpunge-2wより前に保存されたメールボックスのジャンク

次に、cronジョブを追加して、ジョブを自動化します。

 sudo crontab -e 

次の行を追加して、迷惑メールフォルダを毎日クリーンアップします。

 @daily doveadmexpunge-2wより前に保存されたメールボックスのジャンク;doveadmexpunge-2wより前に保存されたメールボックスのゴミ箱

Cronジョブでエラーが発生したときにレポートを受信するには、すべてのCronジョブの上に次の行を追加します。

 MAILTO ="[email protected]" 

ファイルを保存して閉じます。これで完了です。

PostfixAdminでユーザーパスワードを変更する

ユーザーは、https://postfixadmin.example.com/users/login.phpでPostfixAdminにログインできます。 、次にパスワードを変更します。

Sendmailへのアクセスを制限する

デフォルトでは、すべてのローカルユーザーがsendmailを使用できます 送信メールを送信するためのバイナリ。メールサーバーが仮想メールボックスを使用しているので、sendmailへのアクセスを制限することをお勧めします。 信頼できるローカルユーザーにのみバイナリを送信するため、悪意のあるユーザーがそれを使用して大量のメールを送信し、メールサーバーの評判を損なうことはありません。 Postfixのメイン設定ファイルを編集します。

 sudo nano /etc/postfix/main.cf 

このファイルの最後に次の行を追加して、rootおよびwww-dataユーザーのみがsendmail経由で電子メールを送信できるようにします。他のユーザー名を追加することもできます。

 authorized_submit_users =root、www-data 

ファイルを保存して閉じます。次に、Postfixを再起動します。

 sudo systemctl restart postfix 

次のステップ

このチュートリアルが、Ubuntu20.04にPostfixAdminをインストールして使用して仮想メールボックスを作成するのに役立つことを願っています。パート4では、Postfixを使用してSPFとDKIMを設定し、メールの配信可能性を向上させる方法を示します。今後のチュートリアルでは、PostfixAdminを使用して複数のドメインをホストする方法を示します。

Webブラウザーから電子メールにアクセスする場合は、非常に人気があり、機能が豊富なオープンソースのWebメールクライアントであるRoundcubeをお勧めします。いつものように、この投稿が役に立った場合は、無料のニュースレターを購読して、その他のヒントやコツを入手してください。気をつけて🙂


Ubuntu
  1. UbuntuサーバーにDKIMをインストールする方法

  2. Ubuntu16でZimbraメールサーバーをセットアップする方法

  3. Ubuntu20.04にPostfixAdminを使用してメールサーバーをインストールする方法

  1. Ubuntu12.10にApacheWebサーバーをインストールします

  2. 基本的なUbuntuFTPサーバー?

  3. CentOS7でPostfixAdminとMariaDBを使用してメールサーバーをセットアップする

  1. Ubuntuリポジトリサーバーを作成する方法

  2. PostfixAdminを使用してメールサーバーを設定する

  3. Ubuntu18.04でPython仮想環境を作成する方法