機 能 使 用 範 囲 備 考 SMTP AUTH TLS ○ × × 家庭内から、インターネットや家庭内アカウントにメールを送信するだけ。 送信先は任意
家庭内向けの受信は必須○ ○ × 上記に加え、外部環境(インターネット側)から自宅サーバを利用して他のインターネットアカウントにも送信できるようにする。但し、インターネット上を平文のパスワードが流れるので危険。 ○ ○ ○ フルアクセスが可能。TLSによる暗号化によりパスワードをガードできるので、外部からの利用も安全。
# yum list | grep mysql libdbi-dbd-mysql.i386 0.6.5-10.RHEL4.1 installed mysql.i386 4.1.10a-2.RHEL4.1 installed mysql-devel.i386 4.1.10a-2.RHEL4.1 installed mysql-server.i386 4.1.10a-2.RHEL4.1 installed mysqlclient10.i386 3.23.58-4.RHEL4.1 installed php-mysql.i386 4.3.9-3.6 installed freeradius-mysql.i386 1.0.1-3.RHEL4 update mod_auth_mysql.i386 1:2.6.1-2.2 base mysql-bench.i386 4.1.10a-2.RHEL4.1 base mysqlclient10-devel.i386 3.23.58-4.RHEL4.1 base |
# yum install libdbi-dbd-mysql mysql mysql-devel mysql-server mysqlclient10 php-mysql |
# chkconfig mysqld on # /etc/init.d/mysqld start |
# mysqladmin -u root password 'rootパスワード' |
# mysql -u root -p Enter password: rootパスワード[Enter] Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 to server version: 4.0.15 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> select host,user,password from mysql.user; ←user確認 +-----------+------+------------------+ | host | user | password | +-----------+------+------------------+ | localhost | root | **************** | | server | root | | | localhost | | | | server | | | +-----------+------+------------------+ 4 rows in set (0.01 sec) mysql> delete from mysql.user where user=""; ←匿名user削除 Query OK, 2 rows affected (0.01 sec) mysql> select host,user,password from mysql.user; ←user確認 +-----------+------+------------------+ | host | user | password | +-----------+------+------------------+ | localhost | root | **************** | | server | root | | +-----------+------+------------------+ 2 rows in set (0.00 sec) |
mysql> set password for root@'server'=password('rootパスワード'); Query OK, 0 rows affected (0.02 sec) mysql> select host,user,password from mysql.user; ←user確認 +-----------+------+------------------+ | host | user | password | +-----------+------+------------------+ | localhost | root | **************** | | server | root | **************** | +-----------+------+------------------+ 2 rows in set (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.06 sec) mysql> \q Bye |
# cd /usr/local/src # wget http://high5.net/postfixadmin/download.php?file=postfixadmin-2.1.0.tgz # cd /var/www/html # tar zxfv /usr/local/src/download.php?file=postfixadmin-2.1.0.tgz # mv postfixadmin-2.1.0 postfixadmin # chown -R apache:apache postfixadmin # cd ./postfixadmin # chmod 640 *.php *.css # cd ./admin/ # chmod 640 *.php .ht* # cd ../images/ # chmod 640 *.gif *.png # cd ../languages/ # chmod 640 *.lang # cd ../templates/ # chmod 640 *.tpl # cd ../users/ # chmod 640 *.php |
# cd /var/www/html/postfixadmin # cp config.inc.php.sample config.inc.php # chown apache:apache config.inc.php # chmod 640 config.inc.php |
# rm setup.php |
[パスワード未設定時] # cd /var/www/html/postfixadmin # mysql -u root < DATABASE_MYSQL.TXT [パスワード設定時] # cd /var/www/html/postfixadmin # mysql -u root -p < DATABASE_MYSQL.TXT Enter password:xxxxx[Enter] |
# cd /var/www/html/postfixadmin # mv motd.txt xxxx.txt # mv motd-admin.txt xxxx-admin.txt # mv motd-users.txt xxxx-users.txt |
# cd /var/www/html/postfixadmin # sed -i "s/\@change-this-to-your.domain.tld/\@mail.aconus.com/g" config.inc.php # sed -i "s/change-this-to-your.domain.tld/www.aconus.com/g" config.inc.php |
# cd /var/www/html/postfixadmin/languages # wget http://www.aconus.com/~oyaji/suse9.2/ja.lang # chown apache:apache ja.lang # chmod 640 ja.lang # cd ../ # sed -i "s/\$CONF\['default_language'\] = 'en'/\$CONF\['default_language'\] = 'ja'/g" config.inc.php # cd ./templates # sed -i "s/iso-8859-1/Shift_JIS/g" header.tpl |
# cd /var/www/html/postfixadmin/admin # sed -i "s/\/usr\/local\/www\/<domain.tld>\/admin\/.htpasswd/\/var\/www\/html\/postfixadmin\/admin\/.htpasswd/g" .htaccess |
# cd /var/www/html/postfixadmin/admin # htpasswd -c .htpasswd oyaji New password:xxxxx[Enter] Re-type new password:xxxxx[Enter] Adding password for user oyaji |
<Directory /var/www/html/postfixadmin/admin> AllowOverride AuthConfig </Directory> |
<IfModule mod_rewrite.c> RewriteEngine On RewriteLog "logs/rewrite_log" RewriteLogLevel 0 RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^/postfixadmin/(.*)?$ https://%{HTTP_HOST}/postfixadmin/$1 [L,R] </IfModule> |
# mysql -u root -p Enter password:xxxxx[Enter] Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 48 to server version: 4.0.21 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> set password for postfix@'localhost'=password('new password1'); Query OK, 0 rows affected (0.03 sec) mysql> set password for postfixadmin@'localhost'=password('new password2'); Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.03 sec) mysql> \q Bye # cd /var/www/html/postfixadmin/ # sed -i "s/\$CONF\['database_password'\] = 'postfixadmin'/\$CONF\['database_password'\] = 'new password2'/g" config.inc.php |
POP3/IMAPサーバ | 認証メカニズム | パスワード体系 | 備 考 | |
md5crypt | cleartext | |||
Courier-IMAP | authdaemon | ○ | ○ | |
rimap | ○ | ○ | ||
MySQL直接 | × | ○ | MySQLではmd5cryptは不可。 | |
Dovecot | rimap | ○ | ○ | MySQLではmd5cryptは不可 |
MySQL直接 | × | ○ |
# cd /var/www/html/postfixadmin/ # sed -i "s/'md5crypt'/'cleartext'/g" config.inc.php |
# groupadd -g 10000 vuser
# useradd -g vuser -u 10000 vuser
# mkdir /usr/local/virtual
# chown vuser:vuser /usr/local/virtual
# chmod 771 /usr/local/virtual
# cd /usr/src/redhat/SOURCES # wget http://ftp.riken.go.jp/Linux/centos/4.4/os/SRPMS/postfix-2.2.10-1.RHEL4.2.src.rpm # rpm -Uvh postfix-2.2.10-1.RHEL4.2.src.rpm |
# cd /usr/src/redhat/SOURCES # wget http://vda.sourceforge.net/VDA/postfix-2.2.10-vda.patch.gz # gunzip -d postfix-2.2.10-vda.patch.gz |
# cd ../SPECS # wget http://www.aconus.com/~oyaji/centos/postfix-2.2.10-1.vda.centos4.4.patch # patch -p0 < postfix-2.2.10-1.vda.centos4.4.patch # rpmbuild -ba postfix.spec # rpm --force -Uvh ../RPMS/i386/postfix-2.2.10-1.RHE L4.2.i386.rpm |
# ホスト名の設定
#myhostname = host.domain.tld
#myhostname = virtual.domain.tld
myhostname = mail.aconus.com
# ドメイン名の設定
#mydomain = domain.tld
mydomain = aconus.com
# メール送信の設定
# ローカルで配送されたメールがどこからくるように見えるか指定するもので、デフォルトの
# $myhostnameを指定すればいい。分かりにくい表現であるが、ここの値は、localhostが
# 送信する場合のホスト名として@以下に設定されるもので、例えば、デーモンが吐くメール
# やCGIでメールを送信したりする場合の送信元に設定される。従って、ここで指定された
# ホスト名は、インターネット上でDNSが牽ける名前でないと、相手サーバでエラー発生時に
# 返信するためのチェックをしており、その時点で蹴られてしまうので注意が必要である。
#myorigin = $mydomain
myorigin = $myhostname
# メール受信の設定
# メールを受け取るネットワークインタフェースのアドレス範囲を指定する。
#inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
inet_interfaces = all
# メールの最終目的地とみなす範囲の指定
# virtual_mailbox_domainsで指定したドメインが処理されるので未指定。コメントアウトではないので注意。
# warning: do not list domain sample.jp in BOTH mydestination and virtual_mailbox_domains
# というエラー対策
#mydestination = $myhostname, localhost.$mydomain
#mydestination = $myhostname, localhost.$mydomain $mydomain
#mydestination = $myhostname, localhost.$mydomain, $mydomain,
# mail.$mydomain, www.$mydomain, ftp.$mydomain
mydestination =
# 信頼できるクライアントのネットワークを指定
# (家庭内のネットワーク192.168.1.0/24とlocalhost指定)
#mynetworks = 168.100.189.0/28, 127.0.0.0/8
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
mynetworks = 192.168.1.0/24, 127.0.0.0/8
# リレーを許可するドメインを指定
#relay_domains = $mydestination
relay_domains = $mydestination
# ローカル配送で使うアリアス関係の指定
#alias_maps = dbm:/etc/aliases
#alias_maps = hash:/etc/aliases
#alias_maps = hash:/etc/aliases, nis:mail.aliases
#alias_maps = netinfo:/aliases
alias_maps = hash:/etc/aliases
#alias_database = dbm:/etc/aliases
#alias_database = dbm:/etc/mail/aliases
#alias_database = hash:/etc/aliases
#alias_database = hash:/etc/aliases, hash:/opt/majordomo/aliases
alias_database = hash:/etc/aliases
# メールBOXの形式を指定
# Courier-imapを使うため、Maildir形式とする。
#home_mailbox = Mailbox
#home_mailbox = Maildir/
home_mailbox = Maildir/
# sendmail互換プログラムの修正
# sendmail互換プログラムがsendmail.postfixとなっており、CGIとの整合が取れないので修正する。
# CGI側を修正する場合は、下記を含めて修正は不要です。
#sendmail_path = /usr/sbin/sendmail.postfix
sendmail_path = /usr/sbin/sendmail
# ローカルへの配送をバーチャル配送エージェントで行う。
local_transport = virtual
# virtual_mailbox_domains パラメータ値にマッチするドメイン宛のデフォルトのメール配送エージェントの指定。
virtual_transport = virtual
# バーチャルメールボックスが置かれる場所で、事前準備で用意したディレクトリを指定する。
virtual_mailbox_base = /usr/local/virtual
# ローカルまたはリモートアドレスにエイリアスするオプションの検索テーブルを指定する。
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
# ローカルまたはリモートドメインのアドレスにエイリアスされるドメインの名前のリストを指定する。
virtual_alias_domains = $virtual_alias_maps
# バーチャルメール配送エージェントを使って配送されるドメインのリストを指定する。
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
# virtual_mailbox_domains にマッチするドメインの全ての有効なアドレスを持つ検索テーブルを指定する。
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
# ユーザIDの最小値(事前準備で用意したuid)を指定。この値以下のuidの配送は拒否される。
virtual_minimum_uid = 10000
# 事前準備で用意したユーザIDを指定。
virtual_uid_maps = static:10000
# 事前準備で用意したグループIDを指定。
virtual_gid_maps = static:10000
##### 以下は、soft quota関係の設定 #####
# メールボックスのサイズを指定(デフォルでは下記の50MB)
mailbox_size_limit = 51200000
# 一通のメールサイズを指定(デフォルでは下記の10MB。mail_size_limit以下で指定)
message_size_limit = 10240000
# メールボックスのサイズを指定(デフォルでは下記の50MB)
virtual_mailbox_limit = 51200000
# バーチャルドメイン毎のメールボックスのサイズを記述したハッシュファイルを指定
virtual_mailbox_limit_maps = hash:/etc/postfix/vquota
virtual_mailbox_limit_override = yes
# 容量オーバ時の送信者への警告メッセージ送信指定
virtual_overquota_bounce = yes
# 受信トレイだけを制限する場合に指定
virtual_mailbox_limit_inbox = yes
user = postfix |
user = postfix |
user = postfix |
# chmod 644 /etc/postfix/mysql_virtual*
# ユーザやドメイン毎のメールボックスのサイズを指定(virtual_mailbox_limit以下で指定) |
# postmap /etc/postfix/vquota |
Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.
# mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
# ln -s /usr/sbin/sendmail.postfix /usr/sbin/sendmail
# chkconfig postfix on # chkconfig --list postfix postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off # /etc/init.d/postfix start |
# SMTP サーバ制御の設定
# SASLによるSMTP認証を使用
#smtpd_sasl_auth_enable = yes
#smtpd_sasl_auth_enable = no
smtpd_sasl_auth_enable = yes
# 使用可能な認証メカニズムの設定
# noanonymous : 匿名での接続を拒否。
# noplaintext : PLAIN認証を拒否(Outlook ExpressはPLAIN認証のみ対応のためおやじは未記述)
#smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_security_options = noanonymous
# 認証時のTLSの強制設定
# パスワードが流れるので、認証はTLS使用のみ許可する場合はyesに変更
# TLSのsample.cfとダブるので、こちらはコメントアウトしたほうが良い。
#smtpd_tls_auth_only = yes
#smtpd_tls_auth_only = no
# ローカル認証 realm の名前を設定
# Postfixのデフォルトはmyhostnameであるが、SuSEのデフォルトは設定なしである。
# ここは設定なしのままでないと認証できないので注意が必要。
#smtpd_sasl_local_domain = $mydomain
#smtpd_sasl_local_domain = $myhostname
# リレーを許可するものを設定(sample-smtpd.cf)
# ・permit_mynetworks : mynetworksで指定されたネットワークからのリレーを許可。
# ・permit_sasl_authenticated : SMTP認証を通過したものは許可。
# ・reject_unauth_destination : 目的地が $inet_interfaces、$mydestination $virtual_alias_domains
# または $virtual_mailbox_domains にマッチするアドレス宛のメール、及び$relay_domains にマッチする
# 目的地へのメール以外を拒否。
# (本設定で不正な外部からのメールをrejectする。check_relay_domainsは2.0では使用
# されなくなった。)
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
# AUTHコマンドのサポートを認識できないクライアントへの対応(sample-compatibility.cf)
# Outlook Express 4 および Exchange 5等はAUTH コマンドをサポートしていることを認識できないので、
# 使用時は下記のような設定を追加する。おやじはOE 6.0なのでnoのまま。
broken_sasl_auth_clients=yes
pwcheck_method: authdaemond |
# usermod -G postfix,mail,daemon postfix |
#DEBUG_LOGIN=0 |
[rimapによる方法]
# Directory in which to place saslauthd's listening socket, pid file, and
so |
pwcheck_method: saslauthd |
# chkconfig saslautd on |
[MySQL直接による方法]
pwcheck_method: auxprop |
# yum install cyrus-sasl-sql |
# サーバ証明書/鍵関係の設定を変更(RSAのみ対応)
#smtpd_tls_cert_file = /etc/postfix/server.pem
#smtpd_tls_key_file = $smtpd_tls_cert_file
smtpd_tls_cert_file = /usr/local/certs/server.crt
smtpd_tls_key_file = /usr/local/certs/server.key
#
# Its DSA counterparts:
#smtpd_tls_dcert_file = /etc/postfix/server-dsa.pem
#smtpd_tls_dkey_file = $smtpd_tls_dcert_file
# CA関係の設定を変更
# smtpd_tls_CAfile = /etc/postfix/CAcert.pem
smtpd_tls_CAfile = /usr/local/certs/ca.crt
#
#smtpd_tls_CApath = /etc/postfix/certs
smtpd_tls_CApath = /usr/local/certs
# ログレベルの変更(最低レベル)
# smtpd_tls_loglevel = 0
smtpd_tls_loglevel = 1
# TLS使用(そのまま)
smtpd_use_tls = yes
# Outlook/Outlook Express用のモード設定 ( * :下記参照 )
# smtpd_tls_wrappermode = no
# 認証時のTLSの強制設定
# パスワードが流れるので、認証はTLS使用のみ許可する場合はyesに変更
# smtpd_tls_auth_only = no
# セッションキャッシュの設定(そのまま)
smtpd_tls_session_cache_database = sdbm:/etc/postfix/smtpd_scache
# postfix-2.2系以降はsdbmからbtreeに変わっているので、2.2系以降の場合は
# 上記をコメントアウトして下記に変更すること。
# smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache
# 証明書は前述の方法で作成
#smtpd_tls_dh1024_param_file = /etc/postfix/dh_1024.pem
#smtpd_tls_dh512_param_file = /etc/postfix/dh_512.pem
# TLS用乱数デバイスの指定
# tls_random_source = dev:/dev/urandom
tls_daemon_random_source = dev:/dev/urandom
# tls_random_source = egd:/var/run/egd-pool
# tls_random_bytes = 32
# tls_random_reseed_period = 3600s
# tls_random_upd_period = 60s
# tls_daemon_random_source = dev:/dev/urandom
tls_daemon_random_source = dev:/dev/urandom
#tls_daemon_random_source = egd:/var/run/egd-pool
# tls_daemon_random_bytes = 32
*: この設定は、OE が rfc と違うインプリをしているということで設定しましたが、クライアントが OE ならいいのですが、全てのクライアントに特殊な手順で相手してしまうので、local ( AntiVir ) から local への配送時に postfix 自身が止まってしまう(正確にはそのメールを中継できなくなるだけ)という問題が発覚しました。この OE の問題は、5.0の問題とのことなので、おやじは6.0を使用しており設定を外しました。但し、アクセスはあくまで465番ポートです。これでわかるとおり、OE5.0 の環境では、AntiVir と TLS 対応の併用はできません。
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtp inet n - n - - smtpd
smtps inet n - n - - smtpd
-o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
#submission inet n - n - - smtpd
# -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes
#628 inet n - n - - qmqpd
pickup fifo n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr fifo n - n 300 1 qmgr
#qmgr fifo n - n 300 1 nqmgr
tlsmgr fifo - - n 300 1 tlsmgr
# tlsmgrはpostfix-2.2系以降、typeがunixに変更になっているので2.2系以降の場合は
# 上記ではなく、下記のデフォルトのままコメントを外すこと。
#tlsmgr unix - - n 1000? 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
localhost:smtp-backdoor inet n - n - - smtpd -o content_filter=
# /etc/init.d/postfix restart