このチュートリアルは、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シェルに戻りました。
ドメイン |
example.com |
ソース | 宛先 |
[メール保護] | [メール保護] |
メール | パスワード | クォータ |
[メール保護] | No9.E4skNvGa。 (暗号化された形式の「秘密」) | 10485760 |
ドメイン | トランスポート |
example.com | smtp:[1.2.3.4] |
example.comのすべてのメールを転送します SMTPプロトコルを介してIPアドレス
ところで、(メールサーバーシステムの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/)を使用して、
ドメインとユーザーの表についてこれ以上説明する必要はないと思います。
転送テーブルには、次のようなエントリを含めることができます。
ソース | 宛先 | |
[メール保護] | [メール保護] | |
@ example.com | [メール保護] | |
@ example.com | @ anotherdomain.tld | これにより、example.com宛てのすべてのメールがanotherdomain.tldの同じユーザーにリダイレクトされます。たとえば、[メール保護]へのメールは[メール保護]に転送されます |
[メール保護] | [メール保護]、[メール保護] |
トランスポートテーブルには、次のようなエントリを含めることができます。
ドメイン | 輸送 | |
example.com | : | |
example.com | smtp:mail.anotherdomain.tld | |
example.com | smtp:mail.anotherdomain.tld:2025 | |
example.com |
smtp:[1.2.3.4] | 角かっこは、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
15 Links
- 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/