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

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

このチュートリアルは、Falko TimmeによるCopyright(c)2007です。これは、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 メールがスパムやウイルスについてスキャンされるようにします。

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

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

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

1予備メモ

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

私はここでrootユーザーとしてすべてのステップを実行することを好みます。したがって、ルートログインをまだ作成していない場合は、今すぐ作成する必要があります。

sudo passwd root 

その後、rootとしてログインします:

su 

rootではなく通常のユーザーとして作業したい場合は、このチュートリアルに示されているすべてのコマンドの前にsudoを付けることを忘れないでください。だから私が走るとき

apt-get update 

実行する必要があります

sudo apt-get update 

代わりに、など。

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

これらのパッケージをインストールする前に、/ etc / apt / sources.listを変更してユニバースリポジトリを有効にする必要があるため、次の行が有効になっていることを確認してください。

vi /etc/apt/sources.list
[...]

deb http://de.archive.ubuntu.com/ubuntu/ edgy universe

deb-src http://de.archive.ubuntu.com/ubuntu/ edgy universe

[...]

次に実行します

apt-get update 

パッケージデータベースを更新します。

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 postfix-tls libsasl2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl phpmyadmin apache2 libapache2-mod-php5 php5 php5-mysql 

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

Webベースの管理用のディレクトリを作成しますか? <-いいえ
一般的なタイプの構成ですか? <-インターネットサイト
メール名? <-server1.example.com
SSL証明書が必要です<-OK

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

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

apt-get install build-essential dpkg-dev fakeroot debhelper libgdbm-dev libldap2-dev libpcre3-dev libssl-dev libsasl2-dev postgresql-dev po-debconf dpatch libdb4.3-dev libmysqlclient15-dev

cd / usr / src
apt-get source postfix

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

 postconf -d | grep mail_version 

wget http://web.onda.com.br/nadal/postfix/VDA/postfix-2.3.3-vda.patch.gz
gunzip postfix-2.3.3-vda.patch.gz
cd postfix-2.3.3
patch -p1 <../postfix-2.3.3-vda.patch
dpkg-buildpackage
cd ..
dpkg -i postfix_2.3.3 -1_i386.deb
dpkg -i postfix-mysql_2.3.3-1_i386.deb

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

デフォルトでは、MySQLはrootパスワードなしでインストールされますが、これはすぐに変更されます(rootsqlpasswordを使用するパスワードに置き換えてください):

mysqladmin -u root password yourrootsqlpassword

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

mysqladmin -u root -p create mail

次に、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が必要とするテーブルを作成します。

USE mail;

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

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

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

CREATE TABLEトランスポート(
domain varchar(128)NOT NULL default''、
transport varchar(128)NOT NULL default''、
UNIQUE KEYドメイン(ドメイン)
)TYPE =MyISAM;

quit;

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

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

ドメイン
example.com

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

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

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

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

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

ドメイン トランスポート
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 

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

[メールで保護]:/ usr / src#netstat -tap
アクティブなインターネット接続(サーバーと確立済み)
ProtoRecv-QSend-Qローカルアドレス外部アドレス名前cptPID/プログラム0 0 localhost.localdo:MySQLの*:* LISTEN 4556 / mysqldを
TCP 0 0 *:SMTP *:* LISTEN 12994 /マスター
にtcp6 0 0 *:IMAPS *:* LISTEN 4816 / couriertcpd
にtcp6 0 0 *:POP3S *:* LISTEN 4263 / couriertcpd
にtcp6 0 0 *:POP3 *:* LISTEN 4198 / couriertcpd
にtcp6 0 0 *:IMAP2 *:* LISTEN 4761 / couriertcpd
にtcp6 0 0 *:WWW *:* LISTEN 13283 / apache2の
にtcp6 0 0 *:SSH *:* LISTEN 3192 / sshdの

次に、6つのテキストファイルを作成しましょう。

vi /etc/postfix/mysql-virtual_domains.cf
user = mail_admin

password = mail_admin_password

dbname = mail

query = SELECT domain AS virtual FROM domains WHERE domain='%s'

hosts = 127.0.0.1
vi /etc/postfix/mysql-virtual_forwardings.cf
user = mail_admin

password = mail_admin_password

dbname = mail

query = SELECT destination FROM forwardings WHERE source='%s'

hosts = 127.0.0.1
vi /etc/postfix/mysql-virtual_mailboxes.cf
user = mail_admin

password = mail_admin_password

dbname = mail

query = 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_admin

password = mail_admin_password

dbname = mail

query = SELECT email FROM users WHERE email='%s'

hosts = 127.0.0.1
vi /etc/postfix/mysql-virtual_transports.cf
user = mail_admin

password = mail_admin_password

dbname = mail

query = SELECT transport FROM transport WHERE domain='%s'

hosts = 127.0.0.1
vi /etc/postfix/mysql-virtual_mailbox_limit_maps.cf
user = mail_admin

password = mail_admin_password

dbname = mail

query = SELECT quota 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_recipient_restrictions =permit_mynetworks、permit_sasl_authenticated、reject_unauth_destination'
postconf -e' smtpd_use e'smtpd_tls_cer t_file =/etc/postfix/smtpd.cert'
postconf -e' smtpd_tls_key_file =/etc/postfix/smtpd.key'
postconf -e'transport_maps =proxy:mysql:/ etc / postfix / mysql -virtual_transports.cf'
postconf -e' virtual_create_maildirsize =yes'
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 =はい'
postconf -e' proxy_read_maps =$ local_recipient_maps $ mydestination $ virtual_alias_maps $ virtual_alias_domains $ virtual_mailbox_maps $ virtual_mailbox_domains $ relay_recipient_maps $ map_relay_domains $ canonical_maps $ sender_

その後、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

<-国名を入力します(例:「DE」)。
<-州名または州名を入力します。
<-市区町村を入力します。
<-組織を入力します名前(例:会社の名前)
<-組織単位名(例:「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の前の#を削除し、PARAMS ="-m / var / spool / postfix / var / run /saslauthd-r"およびPIDFILE="/ var / spool / postfix / var / run /${の行を追加しますNAME}/saslauthd.pid」。ファイルは次のようになります。

vi /etc/default/saslauthd
# This needs to be uncommented before saslauthd will be run automatically

START=yes



PARAMS="-m /var/spool/postfix/var/run/saslauthd -r"

PIDFILE="/var/spool/postfix/var/run/${NAME}/saslauthd.pid"



# You must specify the authentication mechanisms you wish to use.

# This defaults to "pam" for PAM support, but may also include

# "shadow" or "sasldb", like this:

# MECHANISMS="pam shadow"



MECHANISMS="pam"

次に、ファイル/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=1

account sufficient 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: saslauthd

mech_list: plain login

allow_plaintext: true

auxprop_plugin: mysql

sql_hostnames: 127.0.0.1

sql_user: mail_admin

sql_passwd: mail_admin_password

sql_database: mail

sql_select: select password from users where email = '%u'

次に、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 localhost

MYSQL_USERNAME mail_admin

MYSQL_PASSWORD mail_admin_password

MYSQL_PORT 0

MYSQL_DATABASE mail

MYSQL_USER_TABLE users

MYSQL_CRYPT_PWFIELD password

#MYSQL_CLEAR_PWFIELD password

MYSQL_UID_FIELD 5000

MYSQL_GID_FIELD 5000

MYSQL_LOGIN_FIELD email

MYSQL_HOME_FIELD "/home/vmail"

MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')

#MYSQL_NAME_FIELD

MYSQL_QUOTA_FIELD quota

次に、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 / postfix#telnet localhost pop3
127.0.0.1を試しています...
localhost.localdomainに接続しました。
エスケープ文字は'^]'です。
+OKこんにちは。
終了
+OK次回は頑張ってください。
外部ホストによって接続が閉じられました。

8 / etc/aliasesを変更します

次に、/ etc / aliasesを変更し、その中でpostmasterのエイリアスを指定する必要があります。ポストマスターへの通知を受信できるように、既存の電子メールアドレスの1つを指定できます。また、ルートのメールがポストマスターにも転送されるようにルート行を変更します。

vi /etc/aliases
# Added by installer for initial user

root:   postmaster

postmaster: [email protected]

/ 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 unzoo 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;



# You can modify this file to re-enable SPAM checking through spamassassin

# and to re-enable antivirus checking.



#

# Default antivirus checking mode

# Uncomment the two lines below to enable it back

#



@bypass_virus_checks_maps = (

   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);





#

# Default SPAM checking mode

# Uncomment the two lines below to enable it back

#



@bypass_spam_checks_maps = (

   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);



1;  # insure a defined return

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

vi /etc/amavis/conf.d/20-debian_defaults
$QUARANTINEDIR = "$MYHOME/virusmails";



$log_recip_templ = undef;    # disable by-recipient level-0 log entries

$DO_SYSLOG = 1;              # log via syslogd (preferred)

$syslog_ident = 'amavis';    # syslog ident tag, prepended to all messages

$syslog_facility = 'mail';

$syslog_priority = 'debug';  # switch to info to drop debug output, etc



$enable_db = 1;              # enable use of BerkeleyDB/libdb (SNMP and nanny)

$enable_global_cache = 1;    # enable use of libdb-based cache if $enable_db=1



$inet_socket_port = 10024;   # default listenting socket



$sa_spam_subject_tag = '***SPAM*** ';

$sa_tag_level_deflt  = 2.0;  # add spam info headers if at, or above that level

$sa_tag2_level_deflt = 6.31; # add 'spam detected' headers at that level

$sa_kill_level_deflt = 6.31; # triggers spam evasive actions

$sa_dsn_cutoff_level = 10;   # spam level beyond which a DSN is not sent



$sa_mail_body_size_limit = 200*1024; # don't waste time on SA if mail is larger

$sa_local_tests_only = 0;    # only tests which do not require internet access?



[...]

$final_virus_destiny      = D_DISCARD;  # (data not lost, see virus quarantine)

$final_banned_destiny     = D_BOUNCE;   # D_REJECT when front-end MTA

$final_spam_destiny       = D_BOUNCE;

$final_bad_header_destiny = D_PASS;     # False-positive prone (for spam)

[...]

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

vi /etc/amavis/conf.d/50-user
[...]

$pax='pax';

[...]

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

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

次に、Freshclamデーモン(ClamAVミラーから最新のウイルスシグネチャを定期的かつ自動的にフェッチするデーモン)の構成ファイルを編集する必要があります。これには小さなバグが含まれているためです。 /etc/clamav/freshclam.confを開き、以下に示すようにNotifyClamd行を変更します。

vi /etc/clamav/freshclam.conf
[...]

NotifyClamd /etc/clamav/clamd.conf

[...]

次に、Freshclamを再起動します(Freshclamの起動に失敗するため、他のFreshclamプロセス(おそらく別のClamAVインストール)が実行されていないことを確認してください):

/etc/init.d/clamav-freshclam 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=yes



127.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=permit_mynetworks,reject

        -o mynetworks=127.0.0.0/8

        -o strict_rfc821_envelopes=yes

        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks

        -o smtpd_bind_address=127.0.0.1

次にPostfixを再起動します:

/etc/init.d/postfix restart  

今すぐ実行

netstat -tap 

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

[メールで保護]:/ usr / local / sbin#netstat -tap
アクティブなインターネット接続(サーバーと確立済み)
ProtoRecv-QSend-Qローカルアドレス外部アドレスプログラムID> TCP 0 localhost.localdo:10024 *:* LISTEN 16043 /のamavisd(マスト
TCP 0 localhost.localdo:10025 *:* 15794 /マスター
TCP 0 localhost.localdo LISTEN:MySQLを* :* LISTEN 4783 / mysqldを
TCP 0 0 *:SMTP *:* LISTEN 15794 /マスター
にtcp6 0 0 *:IMAPS *:* LISTEN 13452 / couriertcpd
にtcp6 0 0 *:POP3S *:* LISTEN 13517 / couriertcpd
にtcp6 0 0 *:POP3 *:* LISTEN 13480 / couriertcpd
にtcp6 0 0 *:IMAP2 *:* 13412 / CをLISTEN ouriertcpd
にtcp6 0 0 *:WWW *:* LISTEN 4489 / apache2の
にtcp6 0 0 *:SSH *:* LISTEN 3193 / sshdの

 

10 Razor、Pyzor、DCCをインストールし、SpamAssassinを構成します

Razor、Pyzor、およびDCCは、協調フィルタリングネットワークを使用するスパムフィルターです。それらをインストールするには、

を実行します
apt-get install razor pyzor dcc-client

次に、これら3つのプログラムを使用するようにSpamAssassinに指示する必要があります。 /etc/spamassassin/local.cfを編集し、それに次の行を追加します。

vi /etc/spamassassin/local.cf
[...]



# dcc

use_dcc 1

dcc_path /usr/bin/dccproc

dcc_add_header 1

dcc_dccifd_path /usr/sbin/dccifd



#pyzor

use_pyzor 1

pyzor_path /usr/bin/pyzor

pyzor_add_header 1



#razor

use_razor2 1

razor_config /etc/razor/razor-agent.conf



#bayes

use_bayes 1

use_bayes_rules 1

bayes_auto_learn 1

amavisd-newを後で再起動します:

/etc/init.d/amavis restart

11クォータ超過通知

割り当てを超えているすべての電子メールアカウントに関する通知を受け取りたい場合は、次のようにします。

cd / usr / local / sbin /
wget http://puuhis.net/vhcs/quota.txt
mvquota.txtquota_notify
chmod 755quota_notify

/ usr / local / sbin / quote_notifyを開き、上部の変数を編集します。ファイルのさらに下(最後に向かって)には、%記号を追加する必要がある2行があります。

vi /usr/local/sbin/quota_notify
[...]

my $POSTFIX_CF = "/etc/postfix/main.cf";

my $MAILPROG = "/usr/sbin/sendmail -t";

my $WARNPERCENT = 80;

my @POSTMASTERS = ('[email protected]');

my $CONAME = 'My Company';

my $COADDR = '[email protected]';

my $SUADDR = '[email protected]';

my $MAIL_REPORT = 1;

my $MAIL_WARNING = 1;

[...]

           print "Subject: WARNING: Your mailbox is $lusers{$luser}% full.\n";

[...]

           print "Your mailbox: $luser is $lusers{$luser}% full.\n\n";

[...]

実行

crontab -e

そのスクリプトのcronジョブを作成するには:

0 0 * * * /usr/local/sbin/quota_notify &> /dev/null

(注(少しオフトピック):Ubuntuではcrontab -eによってエディターnanoが自動的に開きます。エディターvi(私のように)の操作に慣れている場合は、次のコマンドを実行してください。

rm -f / etc / Alternatives / editor
ln -s / usr / bin / vi / etc / Alternatives / editor

その後、crontab -eを実行すると、viが表示されます。)

12テストPostfix

PostfixがSMTP-AUTHおよびTLSに対応しているかどうかを確認するには、

を実行します。
telnet localhost 25

Postfixメールサーバータイプへの接続を確立した後

ehlo localhost

線が表示されている場合

250-STARTTLS

および

250-AUTH

すべてが順調です:

[メール保護]:/ usr / local / sbin#telnet localhost 25
127.0.0.1を試しています...
localhost.localdomainに接続しました。
エスケープ文字は「^]」です。
220 server1.example.com ESMTP Postfix(Ubuntu)
ehlo localhost
250-server1.example.com
250-PIPELINING
250-SIZE 10240000
250 -VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH =LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
2212.0.0さようなら
外部ホストによって接続が閉じられました。
[メール保護]:/ usr / local / sbin#

タイプ

quit

システムシェルに戻ります。

13データベースにデータを入力してテストする

データベースにデータを入力するには、MySQLシェルを使用できます。

mysql -u root -p
USE mail;

少なくとも、テーブルドメインにエントリを作成する必要があります およびユーザー :

INSERT INTO `domains`(` domain`)VALUES('example.com');
INSERT INTO `users`(` email`、 `password`、` quote`)VALUES('[email protected]'、 ENCRYPT('secret')、10485760);

(パスワードを暗号化するために、2番目のINSERTステートメントでENCRYPT構文を使用するように注意してください!)

他の2つのテーブルにエントリを作成する場合は、次のようになります。

INSERT INTO `forwardings`( `source`、` destination`)VALUES('[email protected]'、'[email protected]');
INSERT INTO `transport`(` domain`、 `transport`)VALUES ('example.com'、'smtp:mail.example.com');

MySQLシェルを終了するには、次のように入力します

quit;

ほとんどの人にとって、MySQLのグラフィカルなフロントエンドがあれば簡単です。したがって、phpMyAdminを使用することもできます(この例では、 http://192.168.0.100/phpmyadmin/ またはhttp://server1.example.com/phpmyadmin/)を使用して、メールを管理します。 データベース。繰り返しになりますが、ユーザーを作成するときは、必ずENCRYPT関数を使用してパスワードを暗号化してください。

ドメインとユーザーの表についてこれ以上説明する必要はないと思います。

転送テーブルには、次のようなエントリを含めることができます。

[メール保護]のメールを[メール保護]にリダイレクトします [emailprotected]のCatch-Allアカウントを作成しますexample.comへのすべてのメールは[emailprotected]に到着します。ただし、usersテーブルに存在するものは除きます(つまり、[emailprotected]がユーザーテーブルの場合、[メール保護]宛てのメールは引き続き[メール保護]に届きます)。 [保護されたメール]のメールを2つ以上のメールアドレスに転送します。宛先の下にリストされているすべての電子メールアドレスは、電子メールのコピーを受け取ります。
ソース 宛先
[メール保護] [メール保護]
@ example.com [メール保護]
@ example.com @ anotherdomain.tld これにより、example.com宛てのすべてのメールがanotherdomain.tldの同じユーザーにリダイレクトされます。たとえば、[メール保護]へのメールは[メール保護]に転送されます
[メール保護] [メール保護]、[メール保護]

トランスポートテーブルには、次のようなエントリを含めることができます。

example.comなどのメールをローカルに配信します。これは、このレコードがこのテーブルにまったく存在しないかのようです。 example.comなどのすべての電子メールをSMTP経由でサーバーmail.anotherdomain.comに配信します。 すべての電子メール(example.comなど)をsmtp経由でサーバーmail.anotherdomain.comに配信しますが、smtpのデフォルトポートである25ではなくポート2025で配信します。
ドメイン 輸送
example.com
example.com smtp:mail.anotherdomain.tld
example.com smtp:mail.anotherdomain.tld:2025
example.com

smtp:[1.2.3.4]
smtp:[1.2.3.4]:2025
smtp:[mail.anotherdomain.tld]

角かっこは、Postfixが角かっこで囲まれたアドレスのMXDNSレコードを検索できないようにします。 Makes sense for IP addresses.
.example.com smtp:mail.anotherdomain.tld Mail for any subdomain of example.com is delivered to mail.anotherdomain.tld.
* smtp:mail.anotherdomain.tld All emails are delivered to mail.anotherdomain.tld.
[email protected] smtp:mail.anotherdomain.tld Emails for [email protected] are delivered to mail.anotherdomain.tld.

See

man transport 

for more details.

Please keep in mind that the order of entries in the transport table is important! The entries will be followed from the top to the bottom.

Important: Postfix uses a caching mechanism for the transports, therefore it might take a while until you changes in the transport table take effect. If you want them to take effect immediately, run

postfix reload 

after you have made your changes in the transport table.

14 References

  • Tutorial:ISP-style Email Service with Debian-Sarge and Postfix 2.1:http://workaround.org/articles/ispmail-sarge/
  • Postfix + Quota:http://vhcs.net/new/modules/newbb/viewtopic.php?topic_id=3496&forum=17
  • Mail Passwords Encrypted using saslauthd:http://www.syscp.de/docs/public/contrib/cryptedmailpws

  • Postfix MTA:http://www.postfix.org/
  • Postfix Quota Patch:http://web.onda.com.br/nadal/
  • phpMyAdmin:http://www.phpmyadmin.net/
  • Ubuntu:http://www.ubuntu.com/

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

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

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

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

  2. Ubuntu 16.04(LTS)Apache、PHP 7、およびMySQLを使用したLAMPサーバーのチュートリアル

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

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

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

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