読者です 読者をやめる 読者になる 読者になる

UbuntuにApache+PHP7でWebサーバー、Postfix+Dovecot+Rainloop+MySQLでWebメール構築

環境

ポイントはApacheを先にインストールすること!

Webサーバーの構築

Apacheのインストール

$sudo apt-get update
$ sudo apt-get install apache2

http://~などでアクセスしてみて、インストールできてるか確認

PHP7のインストール

php7は標準ではインストール出来ないのでPPAを追加します

$ sudo add-apt-repository ppa:ondrej/php

php7とphp7のMySQLモジュールをインストールします

$ sudo apt-get update
$ sudo apt-get install php7.0 php7.0-mysql libapache2-mod-php7.0 php7.0-mcrypt

インストールが完了したら、Apacheを再起動して、以下のソースをwebルート(/var/www/html/)にアップロードしてブラウザからアクセスしてみます

$ sudo service apache2 restart
<?php
    phpinfo();
?>

phpの設定が表示されれば成功です

MySQLのインストール

次にMySQLをインストールします

$ sudo apt-get install mysql-server

インストールの時にrootのパスワードの設定するよう求められるので設定します。

完了したら以下のコマンドで、rootとして設定したパスワードでMySQLにアクセスできればインストール成功です。

$ mysql -u root -p

Webメールの構築

ドメイン名:hoge.com

ユーザー名/パスワード:hoge/hagehage

とする

Postfixの設定

SMTPサーバー。ポート25を使用して、外部のSMTPサーバーからのメール受信や、外部SMTPサーバーへのメール送信を行う。MTA(Message Transfer Agent)とも呼ばれる。

インストール

$ sudo apt-get install postfix

メールサーバーのタイプは[Internet Site]を選択します。 システムメール名(デフォルトのドメイン名のようなもの)はドメイン名を指定します。

設定ファイル編集

設定ファイルをコピーしてから編集

$ mv /etc/postfix/main.cf /etc/postfix/main.cf.old
$ cp /usr/share/postfix/main.cf.dist /etc/postfix/main.cf
$ vi /etc/postfix/main.cf
#基本設定
myhostname = hoge.com
mydomain = hoge.com
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
relay_domains = $mydestination
home_mailbox = Maildir/ #ユーザーディレクトリ内にメールが格納される
mynetworks = 127.0.0.0/8
inet_interfaces = all
inet_protocols = ipv4

#以下コメントアウトする
#sendmail_path =       
#newaliases_path =
#mailq_path =
#setgid_group =
#html_directory =
#manpage_directory =
#sample_directory =
#readme_directory =


#SMTP-Auth設定(追記する)
#認証にはdovecotを参照させる(Dovecotと同じユーザー名/パスワードで認証可能にする)
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/dovecot-auth
smtpd_client_restrictions = permit_mynetworks, reject_unknown_client, permit
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

#スパム対策(追記する)
smtpd_etrn_restrictions = reject
smtpd_helo_required = yes
disable_vrfy_command = yes

Postfixを再起動する

$ newaliases
# /etc/init.d/postfix restart
[ ok ] Restarting postfix (via systemctl): postfix.service.

Dovecotの設定

DovecotPostfixが保存したメールをメーラーへと渡すPOP3/IMAPサーバー。

この時のDovecotの認証方法をそのままPostfixSMTP-Auth認証時に参照させる。

インストール

$ apt-get install dovecot-common dovecot-imapd dovecot-pop3d

認証方法を設定する

Dovecotの認証にはいくつかの方法があるが、最もわかりやすいパスワードフアイルを参照する方法(auth-passwdfile)で設定する。

OSのpasswdファイルと似た書式でDovecot専用のパスワードファイルを作製し参照させる。

$ vi /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no   #コメントを外す
auth_mechanisms = plain login  #コメントを外す 
!include auth-passwdfile.conf.ext #コメントを外す

パスワードファイルの参照先を設定

$ vi/etc/dovecot/conf.d/auth-passwdfile.conf.ext

このように書き換える

passdb {
  driver = passwd-file
  #args = scheme=CRYPT username_format=%u /etc/dovecot/users
  args = /etc/dovecot/users
}

userdb {
  driver = passwd-file
  #args = username_format=%u /etc/dovecot/users

  # Default fields that can be overridden by passwd-file
  #default_fields = quota_rule=*:storage=1G

  # Override fields from passwd-file
  #override_fields = home=/home/virtual/%u
  args = /etc/dovecot/users
}

パスワードファイルを用意

Dovecotのパスワードフアイルは暗号化してから記載する。

ユーザー名:hoge、パスワード:hagehageの時の暗号化文は以下のコマンドで取得できる。

$ doveadm pw -s DIGEST-MD5 -u hoge -p hagehage
{DIGEST-MD5}8687f71fc51f3392269ee94cbc1d33f1

参照先として指定した場所にパスワードファイルを作製する。

(ユーザー名):(暗号化済みパスワード) の形式で記載する。

$ vi /etc/dovecot/users
hoge:{DIGEST-MD5}8687f71fc51f3392269ee94cbc1d33f1

その他編集

$ vi /etc/dovecot/dovecot.conf
# 30行目:変更(IPv6をリスンしない場合)
listen = *
$ vi etc/dovecot/conf.d/10-mail.conf
# 30行目:Maildir形式に変更
mail_location = maildir:~/Maildir
$ vi /etc/dovecot/conf.d/10-master.conf 
# 96-98行目:コメント解除し追記
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
}
$ vi /etc/dovecot/conf.d/10-ssl.conf
# 6行目:コメント解除して変更(SSLなし)
ssl = no

# 12,13行目:コメントにする
#ssl_cert = </etc/dovecot/dovecot.pem
#ssl_key = </etc/dovecot/private/dovecot.pem

再起動

Dovecotを再起動し設定を反映させる。

$ /etc/init.d/dovecot restart

動作確認

telnetで接続してPostfixDovecot認証の動作確認を行う

POP3動作確認

telnetで接続して認証確認をする。

POP3は平文なので、そのままユーザー名をパスワードを打てばいい。

$ telnet hoge.com 110
Trying 127.0.1.1...
Connected to hoge.com.
Escape character is '^]'.
+OK Dovecot ready.
USER hoge
+OK
PASS hogehoge
OK LOGGED IN.

こうなれば成功

$ telnet hoge.com 110
Trying 127.0.1.1...
Connected to hoge.com.
Escape character is '^]'.
+OK Dovecot ready.
USER hoge
+OK
PASS hogehoge
-ERR [AUTH] Authentication failed.

エラーが出たら次のコマンドを実行してエラーを確認します。

$ doveconf -n