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

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

このチュートリアルは、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予備メモ

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

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

 sudo su 

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

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

 dpkg-reconfigure dash 

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

...そしてAppArmorを無効にすること:

 /etc/init.d/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 
 cd / usr / src 
apt-get source postfix

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

 postconf -d | grep mail_version 

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

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

 wget http://vda.sourceforge.net/VDA/postfix-vda-v13-2.10.0.patch 
cd postfix-2.10.2
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で宣言されたâreadâの戻り値を無視します[-Wunused-result]
maildir.c:417:26:警告:属性で宣言されたâwriteâの戻り値を無視しますwarn_unused_result [-Wunused-result]
cc1:エラーとして扱われるいくつかの警告
make:***[maildir.o]エラー1
make:ディレクトリ `/ usr / src/postfixを離れる-2.10.2 / src / virtual'
make [1]:***[更新]エラー1
make [1]:ディレクトリを離れます`/usr/src/postfix-2.10.2'
make:***[build]エラー2
dpkg-buildpackage:エラー:debian /rulesbuildがエラー終了ステータス2を出しました
[メールで保護]:/ usr / src / postfix-2.10.2#

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

 dpkg-buildpackage 

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

 cd .. 

コマンド

 ls -l <​​/ pre> 

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

 [email protected]:/ usr / src#ls -l <​​br /> total 7124 
drwxr-xr-x 18 root root 4096 Apr 16 04:29 postfix-2.10.2
- rw-r--r-- 1 root root 48594 Apr 16 04:29 postfix-cdb_2.10.2-1_amd64.deb
-rw-r--r-- 1 root root 161974 Apr 16 04:29 postfix- dev_2.10.2-1_all.deb
-rw-r--r--1ルートルート10943444月16日04:29postfix-doc_2.10.2-1_all.deb
-rw-r--r- -1ルートルート573424月16日04:29postfix-ldap_2.10.2-1_amd64.deb
-rw-r--r--1ルートルート505544月16日04:29postfix-mysql_2.10.2-1_amd64.deb
-rw-r--r-- 1 root root 50804 Apr 16 04:29 postfix-pcre_2.10.2-1_amd64.deb
-rw-r--r-- 1 root root 50756 Apr 16 04:29 postfix-pgsql_2.10.2-1_amd64.deb
-rw-r--r--1ルートルート557012013年6月7日postfix-vda-v13-2.10.0.patch
-rw- r--r-- 1 root root 282175 Apr 16 04:28 postfix_2.10.2-1.diff.gz
-rw-r--r-- 1 root root 1522 Apr 16 04:28 postfix_2.10.2- 1.dsc
-rw-r--r-- 1 root root 3899 Apr 1604:29postfix_2.10.2-1_amd64。変更点
-rw-r--r--1ルートルート15423684月16日04:29postfix_2.10.2-1_amd64.deb
-rw-r--r--1ルートルート38283262013年9月12日postfix_2.10.2.orig.tar.gz

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

 dpkg -i postfix_2.10.2-1_amd64.deb postfix-mysql_2.10.2-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ユーザー(
メールvarchar(80)NOT NULL、
パスワードvarchar(20)NOT NULL、
クォータINT(10)DEFAULT '10485760'、
PRIMARY KEY(メール)
)ENGINE =MyISAM;
 CREATE TABLEトランスポート(
domain varchar(128)NOT NULL default''、
transport varchar(128)NOT NULL default''、
UNIQUE KEYドメイン(ドメイン)
)ENGINE =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を使用してメールサーバーを管理できます。

5Postfixを設定する

次に、データベース内のすべての情報を見つけることができる場所をPostfixに通知する必要があります。したがって、6つのテキストファイルを作成する必要があります。 localhostではなくIPアドレス127.0.0.1でMySQLに接続するようにPostfixに指示していることに気付くでしょう。これは、Postfixがchroot jailで実行されており、Postfixにlocalhostを使用するように指示した場合に接続しようとするMySQLソケットにアクセスできないためです。 127.0.0.1を使用する場合、PostfixはTCPネットワークを使用してMySQLに接続しますが、これはchroot jailでも問題ありません(代わりに、MySQLソケットをchroot jailに移動すると、他の問題が発生します)。

/etc/mysql/my.cnfに次の行が含まれていることを確認してください:

 vi /etc/mysql/my.cnf 
 [...]#スキップネットワークの代わりに、デフォルトでは、互換性が高く、安全性が低くないローカルホストでのみリッスンするようになりました。bind-address=127.0.0.1 [...] 

/etc/mysql/my.cnfを変更する必要がある場合は、今すぐMySQLを再起動してください:

 /etc/init.d/mysql restart 

実行

 netstat -tap | grep mysql 

MySQLが127.0.0.1(localhost.localdomain)でリッスンしていることを確認するには:

 [メール保護]:〜#netstat -tap | grep mysql 
tcp 0 0 localhost.localdo:mysql *:* LISTEN 24970 / mysqld
[メールで保護]:〜#

それでは、6つのテキストファイルを作成しましょう。

 vi /etc/postfix/mysql-virtual_domains.cf 
 user =mail_adminpassword =mail_admin_passworddbname =mailquery =SELECT domain AS virtual FROM domain WHERE domain ='%s' hosts =127.0.0.1 
 vi /etc/postfix/mysql-virtual_forwardings.cf 
 user =mail_adminpassword =mail_admin_passworddbname =mailquery =SELECT destination FROM forwardings WHERE source ='%s' hosts =127.0.0.1 
 vi /etc/postfix/mysql-virtual_mailboxes.cf 
 user =mail_adminpassword =mail_admin_passworddbname =mailquery =SELECT CONCAT(SUBSTRING_INDEX(email、'@'、-1)、'/'、SUBSTRING_INDEX(email、'@'、 1)、'/')FROM users WHERE email ='%s' hosts =127.0.0.1 
 vi /etc/postfix/mysql-virtual_email2email.cf 
 user =mail_adminpassword =mail_admin_passworddbname =mailquery =SELECT email FROM users WHERE email ='%s' hosts =127.0.0.1 
 vi /etc/postfix/mysql-virtual_transports.cf 
 user =mail_adminpassword =mail_admin_passworddbname =mailquery =SELECTトランスポートFROMトランスポートWHEREドメイン='%s'ホスト=127.0.0.1 
 vi /etc/postfix/mysql-virtual_mailbox_limit_maps.cf 
 user =mail_adminpassword =mail_admin_passworddbname =mailquery =SELECT Quarter FROM users WHERE email ='%s' hosts =127.0.0.1 

次に、権限とこれらのファイルのグループを変更します。

 chmod o =/etc/postfix/mysql-virtual_*.cf
chgrp postfix/etc/postfix/mysql-virtual_*.cf

次に、ホームディレクトリ/ home/vmailを使用してvmailというユーザーとグループを作成します。これは、すべてのメールボックスが保存される場所です。

 groupadd -g 5000 vmail 
useradd -g vmail -u 5000 vmail -d / home / vmail -m

次に、Postfixの設定を行います。 server1.example.comを有効なFQDNに置き換えてください。そうしないと、Postfixが正しく機能しない可能性があります!

 postconf -e'myhostname =server1.example.com' 
postconf -e'mydestination =server1.example.com、localhost、localhost.localdomain'
postconf -e'mynetworks =127.0.0.0 / 8'
postconf -e' virtual_alias_domains ='
postconf -e' virtual_alias_maps =proxy:mysql:/ etc / postfix / mysql-virtual_forwardings.cf、mysql:/ etc / postfix/mysql-virtual_email2email。 cf'
postconf -e' virtual_mailbox_domains =proxy:mysql:/etc/postfix/mysql-virtual_domains.cf'
postconf -e' virtual_mailbox_maps =proxy:mysql:/ etc / postfix/mysql-virtual_mailboxes。 cf'
postconf -e' virtual_mailbox_base =/ home / vmail'
postconf -e' virtual_uid_maps =static:5000'
postconf -e' virtual_gid_maps =static:5000'
postconf -e'smtpd_sasl_auth_enable =yes'
postconf -e'broken_sasl_auth_clients =yes'
postconf -e'smtpd_sasl_authenticated_header =yes'
postconf -e'smtpd_recipient_restrictions =permit_mynetworks、permit_sasl_ on'
postconf -e' smtpd_use_tls =yes'
postconf -e' smtpd_tls_cert_file =/etc/postfix/smtpd.cert'
postconf -e' smtpd_tls_key_file =/ etc / postfix/smtpd。キー'
postconf -e'transport_maps =proxy:mysql:/etc/postfix/mysql-virtual_transports.cf'
postconf -e' virtual_maildir_extended =yes'
postconf -e' virtual_mailbox_limit_maps =proxy :mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf'
postconf -e' virtual_mailbox_limit_override =yes'
postconf -e' virtual_maildir_limit_message="到達しようとしているユーザーは割り当てを超えています。"'
postconf -e'virtual_overquota_bounce =yes'
postconf -e'proxy_read_maps =$ local_recipient_maps $ mydestination $ virtual_alias_maps $ virtual_alias_domains $ virtual_mailbox_maps $ template_can $ virtual_mailbox_limit_maps'

その後、TLSに必要なSSL証明書を作成します:

 cd / etc / postfix 
openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509

国名(2文字のコード)[AU]:<-国名を入力します(例:「DE」)。
州名または州名(フルネーム)[一部の州]:<-州を入力しますまたは州名。
地域名(例:市)[]:<-市区町村を入力してください。
組織名(例:会社)[Internet Widgits Pty Ltd]:<-組織名を入力してください(例:会社名)
組織単位名(例:セクション)[]:<-組織単位名(例:「IT部門」)を入力します。
一般名(例:あなたの名前)[]:<-システムの完全修飾ドメイン名を入力します(例: "server1.example.com")。
メールアドレス[]:<-メールアドレスを入力します。

次に、smtpd.keyの権限を変更します:

 chmod o =/etc/postfix/smtpd.key 

6Saslauthdを構成する

最初の実行

 mkdir -p / var / spool / postfix / var / run / saslauthd 

次に、/ etc / default/saslauthdを編集します。 STARTをyesに設定し、行OPTIONS ="-c -m / var / run/saslauthd"をOPTIONS="-c -m / var / spool / postfix / var / run / saslauthd -r"に変更します:

 vi / etc / default / saslauthd 
 ## saslauthdデーモンの設定#詳細については、/ usr / share / doc / sasl2-bin / README.Debianをお読みください。##起動時にsaslauthdを自動的に実行する必要がありますか? (デフォルト:no)START =yes#このsaslauthdインスタンスの説明。推奨。#(提案:SASL認証デーモン)DESC ="SASL認証デーモン"#このsaslauthdインスタンスの短縮名。強くお勧めします。#(提案:saslauthd)NAME ="saslauthd"#saslauthdはどの認証メカニズムを使用する必要がありますか? (デフォルト:pam)##このDebianパッケージで使用可能なオプション:#getpwent-getpwent()ライブラリ関数を使用します#kerberos5-Kerberos 5を使用します#pam-PAMを使用します#rimap-リモートIMAPサーバーを使用します#shadow- -ローカルシャドウパスワードfile#sasldbを使用します-ローカルsasldbデータベースfile#ldapを使用します-LDAPを使用します(構成は/etc/saslauthd.confにあります)##一度に使用できるオプションは1つだけです。詳細については、saslauthdのマニュアルページ#を参照してください。##例:MECHANISMS ="pam" MECHANISMS ="pam"#このメカニズムの追加オプション。 (デフォルト:なし)#mech固有のオプションについては、saslauthdのマニュアルページを参照してください。MECH_OPTIONS=""#実行するsaslauthdプロセスの数はいくつですか。 (デフォルト:5)#値0は、接続ごとに新しいプロセスをフォークします。THREADS=5#その他のオプション(デフォルト:-c -m / var / run / saslauthd)#注:-mオプションまたはsaslauthdは実行されません!##警告:-dオプションを指定しないでください。#-dオプションを指定すると、saslauthdがデーモンとしてではなくフォアグラウンドで実行されます。これにより、システムが正しく起動しなくなります。 #saslauthdをデバッグモードで実行したい場合は、安全のために手動で実行してください。## Debian固有の情報については、/ usr / share / doc / sasl2-bin / README.Debianを参照してください。#saslauthdのmanページを参照してください。これらのオプションに関する一般的な#情報の「saslauthd-h」の出力。## chroot Postfixユーザーの例: "-c -m / var / spool / postfix / var / run / saslauthd"#非chrootPostfixユーザーの例:"-c -m / var / run / saslauthd" ## Postfixがchrootを実行しているかどうかを確認するには、/ etc / postfix / master.cfを確認してください。#「smtpinet n --y---smtpd」という行がある場合または"smtpinet n --- --- smtpd"#の場合、Postfixはchrootで実行されています。#行が "smtp inet n --n --- smtpd"の場合、Postfixはchrootで実行されていません。 ="-c -m / var / run / saslauthd" OPTIONS ="-c -m / var / spool / postfix / var / run / saslauthd -r" 

次に、ファイル/etc/pam.d/smtpを作成します。次の2行のみを含める必要があります(正しいデータベースの詳細を必ず入力してください):

 vi /etc/pam.d/smtp 
 auth required pam_mysql.so user =mail_admin passwd =mail_admin_password host =127.0.0.1 db =mail table =users usercolumn =email passwdcolumn =password crypt=1account十分なpam_mysql.so user =mail_admin passwd =mail_admin_password host =127.0.0.1 db =mail table =users usercolumn =email passwdcolumn =password crypt =1 

次に、ファイル/etc/postfix/sasl/smtpd.confを作成します。次のようになります:

 vi /etc/postfix/sasl/smtpd.conf 
 pwcheck_method:saslauthdmech_list:plain loginallow_plaintext:trueauxprop_plugin:sqlsql_engine:mysqlsql_hostnames:127.0.0.1sql_user:mail_adminsql_passwd:mail_admin_passwordsql_database:mailsql_select:select password from users where保護された]%r'

次に、postfixユーザーをsaslグループに追加します(これにより、Postfixがsaslauthdにアクセスする権限を持っていることを確認します):

 adduser postfix sasl 

次に、PostfixとSaslauthdを再起動します:

 /etc/init.d/postfix restart 
/etc/init.d/saslauthd restart

7クーリエの構成

次に、MySQLデータベースに対して認証する必要があることをCourierに通知する必要があります。まず、/ etc / courier / authdaemonrcを編集し、authmodulelistの値を次のように変更します。

 vi / etc / courier / authdaemonrc 
 [...] authmodulelist ="authmysql" [...] 

次に、/ etc / courier / authmysqlrcのバックアップを作成し、古いファイルを空にします。

 cp / etc / courier / authmysqlrc / etc / courier / authmysqlrc_orig 
cat / dev / null> / etc / courier / authmysqlrc

次に、/ etc / courier / authmysqlrcを開き、次の行を入力します。

 vi / etc / courier / authmysqlrc 
<表>
 MYSQL_SERVER localhostMYSQL_USERNAME mail_adminMYSQL_PASSWORD mail_admin_passwordMYSQL_PORT 0MYSQL_DATABASE mailMYSQL_USER_TABLE usersMYSQL_CRYPT_PWFIELDパスワード#MYSQL_CLEAR_PWFIELD passwordMYSQL_UID_FIELD 5000MYSQL_GID_FIELD 5000MYSQL_LOGIN_FIELD emailMYSQL_HOME_FIELD "/ホーム/ vmail" MYSQL_MAILDIR_FIELDのCONCAT(SUBSTRING_INDEX(電子メール、 '@'、 - 1)、 '/'、SUBSTRING_INDEX(email、'@'、1)、'/')#MYSQL_NAME_FIELDMYSQL_QUOTA_FIELDクォータ

インストール中に、IMAP-SSLおよびPOP3-SSLのSSL証明書がホスト名localhostで作成されます。これを正しいホスト名(このチュートリアルではserver1.example.com)に変更するには、証明書を削除します...

 cd /etc/courier 
rm -f /etc/courier/imapd.pem
rm -f /etc/courier/pop3d.pem

...そして次の2つのファイルを変更します。 CN=localhostをCN=server1.example.comに置き換えます(必要に応じて他の値を変更することもできます):

 vi /etc/courier/imapd.cnf 
 [...] CN =server1.example.com [...] 
 vi /etc/courier/pop3d.cnf 
 [...] CN =server1.example.com [...] 

次に、証明書を再作成します...

 mkimapdcert 
mkpop3dcert

...そしてCourierを再起動します:

 /etc/init.d/courier-authdaemon restart 
/etc/init.d/courier-imap restart
/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop restart
/etc/init.d/courier-pop-ssl restart

実行することで

 telnet localhost pop3 

POP3サーバーが正しく機能しているかどうかを確認できます。 +OKこんにちは。 (Linuxシェルに戻るには、quitと入力します。)

[メール保護]:/ etc / courier#telnet localhost pop3
::1 ...
localhost.localdomainに接続しました。
エスケープ文字は「^]」です。
+OKこんにちは。
<-終了
+OK次回は頑張ってください。
外部ホストによって接続が閉じられました。
[メール保護]:/ etc / courier#

8 / etc/aliasesを変更します

ここで、/ etc/aliasesを開く必要があります。 postmasterがrootを指し、rootが自分のユーザー名またはメールアドレスを指していることを確認してください。このように:

 vi / etc / aliases 
 [...] postmaster:rootroot:[メール保護] [...] 

またはこのように(管理者が自分のユーザー名の場合):

 [...] postmaster:rootroot:administrator [...] 

/ etc / aliasesを変更するときはいつでも、実行する必要があります

 newaliases 

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

 /etc/init.d/postfix restart 

9 amavisd-new、SpamAssassin、およびClamAVをインストールします

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

 apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 libnet-ph-perl libnet-snpp-perl libnet-telnet-perl nomarch lzop pax 

その後、amavisd-newを構成する必要があります。構成は、/ etc / amavis/conf.dディレクトリにあるさまざまなファイルに分割されます。それらのそれぞれを見て、構成に慣れてください。ほとんどの設定は問題ありませんが、3つのファイルを変更する必要があります:

まず、@bypass_virus_checks_mapsと@bypass_spam_checks_mapsの行のコメントを解除して、/ etc / amavis / conf.d/15-content_filter_modeでClamAVとSpamAssassinを有効にする必要があります。

 vi /etc/amavis/conf.d/15-content_filter_mode 

ファイルは次のようになります:

 use strict;#このファイルを変更して、spamassassin#によるSPAMチェックを再度有効にし、アンチウイルスチェックを再度有効にすることができます。##デフォルトのアンチウイルスチェックモード#注意してください、そのアンチウイルスチェックはデフォルトで無効になっています。#有効にする場合は、次の行のコメントを解除してください。アンチスパムチェックはデフォルトで無効になっていることに注意してください。#有効にする場合は、次の行のコメントを解除してください。 #定義されたリターンを確保する

次に、/ etc / amavis / conf.d/20-debian_defaultsにあるspam-/virus-mailsのスパム設定とアクションを確認する必要があります。デフォルト設定で問題がなければ、何も変更する必要はありません。ファイルには多くの説明が含まれているため、ここで設定を説明する必要はありません:

 vi /etc/amavis/conf.d/20-debian_defaults 
 [...] $ QUARANTINEDIR ="$ MYHOME / virusmails"; $ quarantine_subdir_levels =1; #隔離ディレクトリのハッシュを有効にする$ log_recip_templ =undef; #受信者ごとのレベル0ログエントリを無効にする$ DO_SYSLOG =1; #syslogd経由でログを記録(推奨)$ syslog_ident ='amavis'; #syslog identタグ、すべてのメッセージの前に追加$ syslog_facility ='mail'; $ syslog_priority ='debug'; #情報に切り替えてデバッグ出力などを削除します$ enable_db =1; #BerkeleyDB / libdb(SNMPおよびnanny)の使用を有効にする$ enable_global_cache =1; #$ enable_db =1 $ inet_socket_port =10024の場合、libdbベースのキャッシュの使用を有効にします。 #デフォルトのリスニングソケット$ sa_spam_subject_tag ='*** SPAM ***'; $ sa_tag_level_deflt =2.0; #そのレベル以上の場合、スパム情報ヘッダーを追加します$ sa_tag2_level_deflt =6.31; #そのレベルに「スパム検出」ヘッダーを追加$ sa_kill_level_deflt =6.31; #スパム回避アクションをトリガーします$ sa_dsn_cutoff_level =10; #DSNが送信されないスパムレベル[...] $ final_virus_destiny =D_DISCARD; #(データは失われません。ウイルス検疫を参照してください)$ final_banned_destiny =D_BOUNCE; #フロントエンドMTAの場合はD_REJECT $ final_spam_destiny =D_BOUNCE; $ final_bad_header_destiny =D_PASS; #誤検知が発生しやすい(スパムの場合)[...] 

最後に、/ etc / amavis / conf.d / 50-userを編集して、$ pax='pax';という行を追加します。真ん中:

 vi /etc/amavis/conf.d/50-user 
 usestrict;##ここに構成ディレクティブを配置します。これらは、以前のファイルの#をオーバーライドします。##このファイルで使用できるディレクティブのドキュメントと例については、/ usr / share / doc / amavisd-new /を参照してください#$ pax ='pax';#---- --------この行より下の部分は変更しないでください-------------1; #定義されたリターンを確保する

その後、これらのコマンドを実行して、clamavユーザーをamavisグループに追加し、amavisd-newとClamAVを再起動します。

 adduser clamav amavis 
/etc/init.d/amavis restart
/etc/init.d/clamav-freshclam restart
/etc/init.d/clamav-daemon restart

次に、受信メールをamavisd-new経由でパイプするようにPostfixを設定する必要があります:

 postconf -e'content_filter =amavis:[127.0.0.1]:10024' 
postconf -e'receive_override_options =no_address_mappings'

その後、次の行を/etc/postfix/master.cfに追加します:

 vi /etc/postfix/master.cf 
 [...] amavis unix --- --- 2 smtp -o smtp_data_done_timeout =1200 -o smtp_send_xforward_command =yes127.0.0.1:10025 inet n --- --- smtpd -o content_filter =-o local_recipient_maps =-o relay_recipient_maps =-o smtpd_restriction_classes =-o smtpd_client_restrictions =-o smtpd_helo_restrictions =-o smtpd_sender_restrictions =-o smtpd_recipient_restrictions =-o smtpd_recipient_restrictions =-o receive_override_options =no_unknown_recipient_checks、no_header_body_checks 

次にPostfixを再起動します:

 /etc/init.d/postfix restart 

今すぐ実行

 netstat -tap 

そして、Postfix(マスター)がポート25(smtp)と10025でリッスンし、amavisd-newがポート10024でリッスンしているのが見えるはずです:

 [email protected]:/ etc / courier#netstat -tap 
アクティブなインターネット接続(サーバーと確立済み)
ProtoRecv-QSend-Qローカルアドレス外部アドレスIDプログラムP /> TCP 0 0 *:HTTP *:* LISTEN 6134 / apache2の
TCP 0 0 *:SSH *:* LISTEN 610 / sshdの
TCP 0 0 *:SMTP *:* 23128 /マスターをLISTEN
TCP 0 0 localhost.localdo:10024 *:* LISTEN 21937 /のamavisd-新しい(
TCP 0 0 localhost.localdo:10025 *:* LISTEN 23128 /マスター
TCP 0 0 localhost.localdo :mysql *:*                     LISTEN      4308/mysqld
tcp        0     52 server1.example.com:ssh 192.168.0.206:57597     ESTABLISHED 976/0
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      610/sshd
tcp6       0      0 [::]:smtp               [::]:*                  LISTEN      23128/master
tcp6       0      0 [::]:imaps              [::]:*                  LISTEN      18191/couriertcpd
tcp6       0      0 [::]:pop3s              [::]:*                  LISTEN      18259/couriertcpd
tcp6       0      0 [::]:pop3               [::]:*                  LISTEN      18222/couriertcpd
tcp6       0      0 [::]:imap2              [::]:*                  LISTEN      18154/couriertcpd
[email protected]:/etc/courier#
 

10 Install Razor, Pyzor And DCC And Configure SpamAssassin

Razor, Pyzor and DCC are spamfilters that use a collaborative filtering network. To install Razor and Pyzor, run

apt-get install razor pyzor

DCC isn't available in the Ubuntu 13.10 repositories, so we install it as follows:

cd /tmp
wget http://www.dcc-servers.net/dcc/source/dcc-dccproc.tar.Z
tar xzvf dcc-dccproc.tar.Z
cd dcc-dccproc-1.3.1.154
./configure --with-uid=amavis
make
make install
chown -R amavis:amavis /var/dcc
ln -s /var/dcc/libexec/dccifd /usr/local/bin/dccifd

Now we have to tell SpamAssassin to use these three programs. Edit /etc/spamassassin/local.cf and add the following lines to it:

vi /etc/spamassassin/local.cf
[...]#dccuse_dcc 1dcc_path /usr/local/bin/dccproc#pyzoruse_pyzor 1pyzor_path /usr/bin/pyzor#razoruse_razor2 1razor_config /etc/razor/razor-agent.conf#bayesuse_bayes 1use_bayes_rules 1bayes_auto_learn 1

Then we must enable the DCC plugin in SpamAssassin. Open /etc/spamassassin/v310.pre and uncomment the loadplugin Mail::SpamAssassin::Plugin::DCC line:

vi /etc/spamassassin/v310.pre
[...]# DCC - perform DCC message checks.## DCC is disabled here because it is not open source. See the DCC# license for more details.#loadplugin Mail::SpamAssassin::Plugin::DCC[...]

You can check your SpamAssassin configuration by executing:

spamassassin --lint

It shouldn't show any errors.

Restart amavisd-new afterwards:

/etc/init.d/amavis restart

Now we update our SpamAssassin rulesets as follows:

sa-update --no-gpg

We create a cron job so that the rulesets will be updated regularly.実行

crontab -e

to open the cron job editor. Create the following cron job:

23 4 */2 * * /usr/bin/sa-update --no-gpg &> /dev/null

This will update the rulesets every second day at 4.23h.


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

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

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

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

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

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

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

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

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