Chienomi

Mail Virtual Alias @ CentOS 6

server

メールサーバーの本運用は通常virtualであるはずだ。メールアカウントの数だけユーザーアカウントがあるというのは考えられない。

ただし、私の場合はサブドメインをバーチャルエイリアスにするため、バーチャルドメインが必要になる。

新しいDovecotに関する情報がなく苦労したが、http://vogel.at.webry.info/201312/article_10.htmlの通りにやってみた。大体これでうまくいったのだが、私の場合はいくつかひっかかった点があった。

まず、hown -R mailuser ~mailuserをちゃんと実行しておかなくてはいけないこと。vmailboxファイルは最後に/をつけ忘れるとmbox形式になってしまうこと。

しかしこれではPOPの認証がfailedとなる。調べてみると、このサイトにはデフォルトでコメントアウトしているauth-passwdfile.conf.extのロードをしていない。

[root@server ~]# grep -R auth-passwd /etc/dovecot /etc/dovecot/conf.d/10-auth.conf:#!include auth-passwdfile.conf.ext

さらに、パスワードファイル認証も無効化されている。

[root@server ~]# grep disable /etc/dovecot/conf.d/10-auth.conf #disable_plaintext_auth = no # Authentication cache size (e.g. 10M). 0 means it's disabled. Note that # 0 disables caching them completely. # NOTE: See also disable_plaintext_auth setting.

この2点を修正したが、それでもエラーになる。原因はパスワードファイルのファイル名(設定ではなくファイル自体)が間違っていたためのNo such file or directoryだった。

さらにPostfixからのDovecot認証の利用は情報が錯綜してよくわからない状態だったが、結局のところ/etc/dovecot/conf.d/10-master.confのPostfixから利用するコメントアウトをはずすだけでエラーは出なくなった。しかしながら、認証自体がうまくいかない。userとgroupの設定を追加したが、元々666なのだから、効果はなかった。明らかに問題はPostfixにあり、Dovecotはこれでいいだろう。

telnetを打ってみると25番ポートが反応しない。ここでOP25Bによるものだと気付いた。

submissionの設定を探してみると、master.cfにsubmissionの項目があり、このコメントアウトをはずせばsubmissionは機能する。しかしながら

submission inet n - n - - smtpd # -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING

TLSを強制するとTLSが機能しない。とりあえず、TLSは要求しないことにした(encryptでなくmayにしておく)。

しかし、それでも544 host access deniedという応答で送ることができない。調べてみると、さらに別のパラメータを設定する必要があるようだ。main.cfに記述する。

smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_relay_restricions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination broken_sasl_auth_clients = yes

さらにスペルミスにもひっかかってしまったが、これでうまく通った。TLSが上手く動かない以外は正常だ。

TLSについて調べてみると、どうも鍵にパスフレーズがかかっていると使えない、ということだ。そこで、次のようにして問題の解決を図る。

[root@sesrver]# openssl genrsa -aes128 1024 server.key Generating RSA private key, 1024 bit long modulus .++++++ .........................++++++ e is 65537 (0x10001) Enter pass phrase: #ここでは普通にパスフレーズを入力する Verifying - Enter pass phrase: [root@dti-vps-srv71 certs]# openssl rsa -in server.key -out server.key #これによってパスフレーズを消滅させる Enter pass phrase for server.key: writing RSA key [root@dti-vps-srv71 certs]# openssl req -new -x509 -key server.key -days 3650 -out server.crt # certファイルを作る You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:JP #カントリーコード State or Province Name (full name) []:Kanagawa #神奈川 Locality Name (eg, city) [Default City]:Yokohama #横浜 p {[ "さらにスペルミスにもひっかかってしまったが、これでうまく通った。TLSが上手く動かない以外は正常だ。", "TLSについて調べてみると、どうも鍵にパスフレーズがかかっていると使えない、ということだ。そこで、次のようにして問題の解決を図る。" ]} sb { -END [root@sesrver]# openssl genrsa -aes128 1024 server.key Organization Name (eg, company) [Default Company Ltd]:HarukaSound #組織名 Organizational Unit Name (eg, section) []: #部署はない Common Name (eg, your name or your server's hostname) []:reasonset.net #FQDN Email Address []:master@reasonset.net #メールアドレス [root@dti-vps-srv71 certs]# openssl x509 -in server.crt -outform der -out server.der # derファイルの生成

これで鍵の生成は完了。ファイル名が若干変わったので、main.cfを修正。さらに、DovecotのSSLが設定されていなかったので、/etc/dovecot/conf.d/10-ssl.confを修正(ssl = yesのコメントアウトをはずし、ファイル名を修正)。

そしてmaster.cfencryptに戻して完了。STARTTLSが正しく働くようになった。