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

Postfix、Courier、MySQL、SquirrelMailを使用した仮想ユーザーとドメイン(Ubuntu 14.04LTS)

このチュートリアルは、Falko Timme&Srijan KishoreによるCopyright(c)2014です。これは、http://workaround.orgにあるChristophHaasのチュートリアルから派生しています。このチュートリアルは、クリエイティブコモンズライセンス2.5以降のバージョンで自由に使用できます。

このドキュメントでは、仮想ユーザーとドメイン、つまりMySQLデータベースにあるユーザーとドメインに基づくPostfixメールサーバーをインストールする方法について説明します。また、Courier(Courier-POP3、Courier-IMAP)のインストールと構成を示し、CourierがPostfixが使用するのと同じMySQLデータベースに対して認証できるようにします。

結果として得られるPostfixサーバーはSMTP-AUTHに対応しています およびTLS および割り当て (デフォルトでは、quotaはPostfixに組み込まれていません。Postfixに適切にパッチを適用する方法を説明します)。パスワードは暗号化で保存されます データベース内のフォーム(私が見つけたほとんどのドキュメントは、セキュリティリスクであるプレーンテキストのパスワードを扱っていました)。これに加えて、このチュートリアルでは Amavisdのインストールについて説明します。 、 SpamAssassin およびClamAV 電子メールがスパムやウイルスについてスキャンされるようにします。 SquirrelMailのインストール方法も紹介します ユーザーがメールを読んだり送信したり、パスワードを変更したりできるようにするためのウェブメールインターフェースとして。

このような「仮想」セットアップ(MySQLデータベース内の仮想ユーザーとドメイン)の利点は、「実際の」システムユーザーに基づくセットアップよりもはるかにパフォーマンスが高いことです。この仮想セットアップを使用すると、メールサーバーは数千のドメインとユーザーを処理できます。さらに、新しいユーザー/ドメインを追加したり、既存のユーザー/ドメインを編集したりするときにのみMySQLデータベースを処理する必要があるため、管理が容易です。 dbファイルを作成するためのpostmapコマンド、Postfixのリロードなどはもう必要ありません。MySQLデータベースの管理には、このハウツーにもインストールされるphpMyAdminなどのWebベースのツールを使用できます。 3番目の利点は、ユーザーがユーザー名として(ユーザー名+メールアドレスではなく)メールアドレスを持っていることです。これにより、理解しやすく、覚えやすくなります。

このハウツーは実用的なガイドとして意図されています。理論的背景については説明していません。それらは、Webの他の多くのドキュメントで扱われます。

このドキュメントには、いかなる種類の保証もありません。このようなシステムを構築する方法はこれだけではありません。この目標を達成する方法はたくさんありますが、これが私のやり方です。これがあなたのために働くという保証はありません!

1予備メモ

このチュートリアルはUbuntu14.04サーバー(Trusty Tahr)に基づいているため、このチュートリアルを続行する前に、基本的なUbuntu14.04サーバーのインストールをセットアップする必要があります。システムには静的IPアドレスが必要です。このチュートリアルでは、IPアドレスとして192.168.0.100を使用し、ホスト名としてserver1.example.comを使用しています。

rootとしてログインしていることを確認してください(入力

sudo su

rootになるには)、このチュートリアルのすべての手順をrootユーザーとして実行する必要があるためです。

/ bin/shを/bin/bashへのシンボリックリンクにすることが非常に重要です...

dpkg-ダッシュの再構成

デフォルトのシステムシェル(/ bin / sh)としてダッシュを使用しますか? <-いいえ

...そしてAppArmorを無効にします。apparmor:unrecognized serviceを取得している場合は、update-rc.dから削除します

service apparmor stop
update-rc.d -f apparmor remove
apt-get remove apparmor apparmor-utils

2 Postfix、Courier、Saslauthd、MySQL、phpMyAdminをインストールします

Postfix、Courier、Saslauthd、MySQL、およびphpMyAdminをインストールするには、単に実行します

apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2 libsasl2-modules libsasl2-modules -sql sasl2-bin libpam-mysql openssl phpmyadmin apache2 libapache2-mod-php5 php5 php5-mysql libpam-smbpass

いくつかの質問があります:

MySQLの「root」ユーザーの新しいパスワード:<-yourrootsqlpassword
MySQLの「root」ユーザーのパスワードを繰り返します:<-yourrootsqlpassword
Webベースの管理用のディレクトリを作成しますか? <-いいえ
メール構成の一般的なタイプ:<-インターネットサイト
システムメール名:<-server1.example.com
SSL証明書が必要です<-OK
自動的に再構成するWebサーバー:<-apache2
dbconfig-commonを使用してphpmyadminのデータベースを構成しますか? <-いいえ

3クォータパッチをPostfixに適用する

Postfixソースを取得し、クォータパッチでパッチを適用し、新しいPostfix .debパッケージをビルドして、それらの.debパッケージをインストールする必要があります。

apt-get build-dep postfix

次のようなエラーが発生する場合があります。-

[メール保護]:〜#apt-get build-dep postfix
パッケージリストの読み取り...完了
依存関係ツリーの構築
状態情報の読み取り...完了
E:あなたいくつかの「ソース」URIをsources.listに配置する必要があります
[メール保護]:〜#

ソースリポジトリを追加することで、次のように修正できます。

vi /etc/apt/sources.list

私の場合のようにエントリを作成します

debhttp://archive.ubuntu.com/ubuntu信頼できるメインの制限付きユニバース
debhttp://archive.ubuntu.com/ubuntutrusty-メインの制限付きユニバースを更新
debhttp://security.ubuntu .com /ubuntutrusty-securityメイン制限付きユニバースマルチバース
debhttp://archive.canonical.com/ubuntutrustyパートナー


deb-src http://archive。 ubuntu.com/ubuntuトラスティメイン制限付きユニバース
deb-srchttp://archive.ubuntu.com/ubuntutrusty-updatesメイン制限付きユニバース
deb-srchttp://security.ubuntu.com/ ubuntutrusty-セキュリティメイン制限付きユニバースマルチバース
deb-srchttp://archive.canonical.com/ubuntu信頼できるパートナー

次へ

apt-get update
apt-get build-dep postfix

cd / usr / src
apt-get source postfix

(次のコマンドで正しいPostfixバージョンを使用していることを確認してください。Postfix2.11.0がインストールされています。実行することでPostfixバージョンを確認できます

postconf -d | grep mail_version

出力は次のようになります。

[メール保護]:/ usr / src#postconf -d | grep mail_version
mail_version =2.11.0
milter_macro_v =$ mail_name $ mail_version
[email protected]:/ usr / src#


wget http://vda.sourceforge.net/VDA/postfix-vda-v13-2.10.0.patch
cd postfix-2.11.0
patch -p1 <../postfix-vda-v13 -2.10.0.patch

次に、debian / rulesを開き、DEB_BUILD_HARDENINGを1から0に変更します。

vi debian / rules

[...]
export DEB_BUILD_HARDENING=0
[...]

これを行わないと、ビルドが失敗し、次のエラーメッセージが表示されます。

maildir.c:関数âdeliver_maildirâ:
maildir.c:974:17:エラー:フォーマットが文字列リテラルではなく、フォーマット引数がない[-Werror =format-security]
maildir.c:977:17 :エラー:フォーマットが文字列ではなく、フォーマット引数がない[-Werror =format-security]
maildir.c:983:17:エラー:フォーマットが文字列ではなく、フォーマット引数がない[-Werror =format-security ]
maildir.c:986:17:エラー:フォーマットは文字列リテラルではなく、フォーマット引数もありません[-Werror =format-security]
maildir.c:関数âsql2fileâ:
maildir。 c:404:25:警告:属性warn_unused_result [-Wunused-result]
maildir.c:417:26で宣言されたâreadâの戻り値を無視します:警告:属性warn_unused_result[-で宣言されたâwriteâの戻り値を無視しますWunused-result]
cc1:エラーとして扱われるいくつかの警告
make:***[maildir.o]エラー1
make:ディレクトリ`/usr/src/postfix-2.11を離れます。 0 / src / virtual'
make [1]:***[update]エラー1
make [1]:ディレクトリ `/ usr / src/postfiを離れますx-2.11.0'
make:***[ビルド]エラー2
dpkg-buildpackage:エラー:debian /rulesビルドでエラー終了ステータス2が発生しました
[メール保護]:/ usr /src/postfix-2.11.0#

これで、新しいPostfix.debパッケージをビルドできます。

dpkg-buildpackage

ここで、1つのディレクトリを上に移動します。ここに、新しい.debパッケージが作成されています。

cd ..

コマンド

ls -l <​​/ P>

利用可能なパッケージを表示します:


[メール保護]:/ usr / src#ls -l <​​br /> total 6824
drwxr-xr-x 18 root root 4096 Apr 30 04:28 postfix-2.11.0
-rw-r --r--1ルートルート467564月30日04:28postfix-cdb_2.11.0-1_amd64.deb
-rw-r--r--1ルートルート1428424月30日04:28postfix-dev_2.11.0 -1_all.deb
-rw-r--r--1ルートルート8518424月30日04:28postfix-doc_2.11.0-1_all.deb
-rw-r--r--1ルートroot 53898 Apr 30 04:28 postfix-ldap_2.11.0-1_amd64.deb
-rw-r--r-- 1 root root 48500 Apr 30 04:28 postfix-mysql_2.11.0-1_amd64.deb
-rw-r--r-- 1 root root 48610 Apr 30 04:28 postfix-pcre_2.11.0-1_amd64.deb
-rw-r--r-- 1 root root 48324 Apr 30 04:28 postfix-pgsql_2.11.0-1_amd64.deb
-rw-r--r--1ルートルート557012013年6月7日postfix-vda-v13-2.10.0.patch
-rw-r-- r--1ルートルート2678554月30日04:27postfix_2.11.0-1.diff.gz
-rw-r--r--1ルートルート15224月30日04:27postfix_2.11.0-1.dsc
-rw-r--r-- 1 root root 3885 Apr 30 04:28 postfix_2.11.0-1_amd64.changes
-rw-r --r--1ルートルート13292384月30日04:28postfix_2.11.0-1_amd64.deb
-rw-r--r--1ルートルート40347412月12日01:38postfix_2.11.0.orig.tar .gz
[メール保護]:/ usr / src#

postfixおよびpostfix-mysqlパッケージを選択し、次のようにインストールします。

dpkg -i postfix_2.11.0-1_amd64.deb postfix-mysql_2.11.0-1_amd64.deb

4 Postfix/Courier用のMySQLデータベースを作成する

次に、mailというデータベースを作成します:

mysqladmin -u root -p create mail

この質問を求められます:

パスワードを入力してください:<-yourrootsqlpassword

次に、MySQLシェルに移動します:

mysql -u root -p

MySQLシェルでは、メールデータベースに対するSELECT、INSERT、UPDATE、DELETE権限を持つpasswort mail_admin_password(独自のパスワードに置き換えます)を使用してユーザーmail_adminを作成します。このユーザーは、PostfixとCourierがメールデータベースに接続するために使用されます:

GRANT SELECT、INSERT、UPDATE、DELETEONmail。*TO'mail_admin'@'localhost' IDENTIFIED BY'mail_admin_password';
GRANT SELECT、INSERT、UPDATE、DELETEONmail。*TO'mail_admin'@'localhost。 localdomain'IDENTIFIED BY' mail_admin_password';
FLUSH PRIVILEGES;

引き続きMySQLシェルで、PostfixとCourierに必要なテーブルを作成します:

メールを使用する;

CREATE TABLEドメイン(
domain varchar(50)NOT NULL、
PRIMARY KEY(domain))
ENGINE =MyISAM;

CREATE TABLE転送(
source varchar(80)NOT NULL、
destination TEXT NOT NULL、
PRIMARY KEY(source))
ENGINE =MyISAM;

CREATE TABLEユーザー(
email varchar(80)NOT NULL、
password varchar(20)NOT NULL、
quote INT(10)DEFAULT '10485760'、
PRIMARY KEY(email )
)ENGINE =MyISAM;

CREATE TABLEトランスポート(
ドメインvarchar(128)NOT NULLデフォルト''、
トランスポートvarchar(128)NOT NULLデフォルト''、
一意キードメイン(ドメイン)
)エンジン=MyISAM;

やめる;

お気づきかもしれませんが、やめます。コマンドMySQLシェルを終了し、Linuxシェルに戻りました。

ドメイン テーブルには、Postfixがメールを受信する必要がある各仮想ドメインが格納されます(例: example.com )。

ドメイン
example.com

転送 テーブルは、あるメールアドレスを別のメールアドレスにエイリアスするためのものです。 [メール保護]のメールを転送する [メール保護]

ソース 宛先
[メール保護] [メール保護]

ユーザー テーブルには、すべての仮想ユーザー(つまり、メールアドレスとユーザー名が同じであるためメールアドレス)とパスワード(暗号化)が格納されます。 form!)および各メールボックスのクォータ値(この例では、デフォルト値は10485760バイト、つまり10MB)です。

email パスワード quote
[メール保護] No9.E4skNvGa。 (暗号化された形式の「秘密」) 10485760

トランスポート テーブルはオプションで、上級ユーザー向けです。これにより、単一ユーザー、ドメイン全体、またはすべてのメールのメールを別のサーバーに転送できます。たとえば、

domain 輸送
example.com smtp:[1.2.3.4]

example.comのすべてのメールを転送します smtpプロトコルを介してIPアドレス 1.2.3.4でサーバーに接続します (角かっこ [] 「MXDNSレコードを検索しない」という意味です(これはIPアドレスにとって意味があります...)。代わりに完全修飾ドメイン名(FQDN)を使用する場合は、角かっこを使用しません。)

ところで、(メールサーバーシステムのIPアドレスは192.168.0.100だと思います)ブラウザでhttp://192.168.0.100/phpmyadmin/からphpMyAdminにアクセスし、mail_adminとしてログインできます。次に、データベースを確認できます。後で、phpMyAdminを使用してメールサーバーを管理できます。


Ubuntu
  1. Ubuntu 14.04LTSでのProftpdとMySQL(クォータを含む)を使用した仮想ホスティング

  2. Postfix、Courier、MySQL、SquirrelMailを使用した仮想ユーザーとドメイン(Ubuntu 13.10)

  3. CentOS6VPSでPostfixとDovecotを使用する仮想ユーザーとドメインを備えたメールサーバー

  1. PHP5(PHP-FPM)とMySQLサポートを備えたLighttpdをUbuntu14.04LTSにインストールする

  2. Postfix、Courier、MySQLを使用した仮想ユーザーとドメイン(Ubuntu 6.10 Edgy Eft)

  3. Sendmailを使用した仮想ユーザーとドメイン

  1. Postfix、Courier、MySQL、SquirrelMailを使用した仮想ユーザーとドメイン(Ubuntu 8.04 LTS)

  2. Postfix、Courier、MySQL、SquirrelMailを使用した仮想ユーザーとドメイン(Ubuntu 8.10)

  3. Ubuntu 8.10でのProftpdとMySQL(クォータを含む)を使用した仮想ホスティング