2016.01.24
何とか自力で設定完了しました。顛末は下で記述。
タイトルを完了したから変更しました。
これ見てやる人いないと思いますけど、躓いたらコメント残したら思い出して書くかも。
というか、お金にせっぱつまってないなら簡単で安全なGoogleAppsとか使った方がいいです。面倒くさい…
.
.
##誰?
片手間にサーバをいじくって楽死んでます。
数年前にUbuntu触ってLinuxなんだこれって言ってたら、去年CentOSにWebアプリケーションもどきを白目むきながら作ることに。今はそのどうしようもなく下手くそなコードを書き直してたりします。
####つまり?
素人です。
##何がしたいの?
現在持っているGmailアカウントから独自ドメインでメールの送受信ができるようにする。
##なんでそんなことしたいの?
Gmailでアカウント取ろうと思ったけどアカウントすでにとられていて作れなかったのと、独自ドメインにするにしてもどうせなら今使ってるGmailと連携して送受信ができたらいいなぁ。
サーバとかLinuxとかの勉強にもなれば一石二鳥やん(迫真)
###Gmailの設定でできるじゃん
設定 > アカウントとインポート > 名前 > メールアドレスを追加
から独自ドメインを追加できる方法は使えなくなりました。有償のAppsにするか、メールサーバだけ自前で用意する必要があります。
###SMTPサーバのところにGmailのSMTPさーばを...
それも使えなくなりました(半ギレ)
...
...
...
画像なんかはあとから追加します
ちょいちょい追記すると思うので、書き足りてなかったら変わると思います
#要件?
####前提
- 独自ドメインを取得(ここではexample.com, example.jpとする)
- ドメインの名前解決済み
- 25/tcp, 110/tcp, 587/tcp が開放されている
- レンタルVPSでサーバ運用
- 既存Gmailアカウントあり
####構成
- onamae.com VPS 3Core/2GB/200GB
- CentOS7.0 64bit
- Postfix2.10.1
- Dovecot2.2.10
- procmail3.22
- cyrus-sasl2.1.26
--------------------------------%<キリトリ--------------------------------
- PostfixでSMTPサーバを立てる
- DovecotでPOP/IMAP サーバを立てる
- Gmailから独自ドメインで送受信ができる
- バーチャルメールサーバとして立てて複数のメールアカウント(マルチドメイン)で運用できる
- SSL/TLSは今回導入しません(きちんと立てられてから入れます)
#インストール
特別コンパイルするようなものもないので全てyumでインストールしました。
PostfixはCentOS7のデフォルトMTAなので最初から入っています。必要に応じてアップデートかけておきます。
cyrus-sasl-plain
cyrus-sasl-lib
は入れた覚えがあったりなかったり。必要かどうかは分かりません。
yum install dovecot procmail cyrus-sasl
##Postfixの設定
リアルドメインをexample.jp、バーチャルドメインをexample.comとします。今の環境は特にサブドメインを作ってません。
だいたい注釈のページの通りに作ったので、変更点のみ上げていきますね。
myhostname = example.jp
mydomain = example.jp
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 192.168.1.0/24, 127.0.0.0/8
relay_domains = $mydestination
mailbox_command = /usr/bin/procmail
#ここからは一番下に書きました
smtpd_sasl_path = smtpd
smtpd_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_mechanism_filter = plain
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
virtual_alias_maps = hash:/etc/postfix/virtual
virtual_mailbox_base = /home/user_mails
virtual_mailbox_domains = /etc/postfix/virtual_domains
virtual_mailbox_maps = hash:/etc/postfix/virtual_maps
virtual_minimum_uid = 499
virtual_uid_maps = static:2000
virtual_gid_maps = static:2000
broken_sasl_auth_cliants = yes
smtpd_sasl_security_options = noanonymous
変更なし
postmap /etc/postfix/virtual
で設定DB化
example.com
リアルドメインを書くとうまく動かなくなるので注意
#RealDomain example.jp
postmaster@example.jp example.jp/postmaster/Maildir/
#VirtualDomain example.com
gerogero@example.com example.com/gerogero/Maildir/
*Maildir/*と書かないとうまく動かないので(ry
postmap /etc/postfix/virtual_maps
で設定DB化
mkdir /home/user_mails
chmod 1777 /home/user_mails
mkdir /home/user_mails/example.jp
chmod 1777 /home/user_mails/example.jp
mkdir /home/user_mails/example.com
chown 5000:5000 /home/user_mails/example.com
chmod 700 /home/user_mails/example.com
Postfixを起動させる(多分既に起動してるから再起動)
##Dovecotの設定
protocols = imap pop3
mail_location = maildir:/home/user_mails/%d/%n/Maildir #これだとうまくいかなかった?(確認取れてません)
mail_location = maildir:~/Maildir #こっちは確実にうまくいった
disable_plaintext_auth = no
auth_mechanisms = plain login
#コメントアウト
#!include auth-system.conf.ext
#コメントアウト解除
!include auth-passwdfile.conf.ext
# example.jp
postmaster@example.jp:{plain}12345678:500:500::/home/user_mails/example.jp/postmaster:/sbin/nologin:
# example.com
gerogero@example.com:{plain}87654321:2000:2000::/home/user_mails/example.com/gerogero:/sbin/nologin:
どうせ一回でうまくいくわけがないのでデバッグログを出力するようにしておくとよいです。
auth_verbose = yes
auth_debug = yes
#---EOF---
Dovecotを起動させる
##procmailの設定
MAILDIRECTORY=/home/user_mails/example.jp
LOGFILE=$HOME/procmail.log
LOCKFILE=$HOME/.lockfile
DEFAULT=$MAILDIRECTORY/$LOGNAME/Maildir/
:0
$DEFAULT
procmailのパーミッション変更
chmod 600 /etc/skel/.procmailrc
##SASLの設定
pwcheck_method: auxprop
#コメントアウト
#mech_list: plain login
ユーザ追加(コマンドの後にパスワードの設定)
saslpasswd2 -u example.jp -c postmaster
saslpasswd2 -u example.com -c gerogero
パーミッション変更
chmod 640 /etc/sasldb2
chgrp postfix /etc/sasldb2
SMTP-Authを起動させる させなくていいです。
パスワードの設定ファイルの指定がデフォルトと違う場所なのできちんと指定
passdb {
driver = passwd-file
args = scheme=CRYPT username_format=%u /etc/dovecot-passwd #こ↑こ↓
}
userdb {
driver = passwd-file
args = username_format=%u /etc/dovecot-passwd #こ↑こ↓
# 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
}
----%<----ここまでで設定が完了したはず----%<----
##確認
自分の持っているメールアドレスから、gerogero@example.com
に送信してみる。正しく設定されていれば/home/user_mails/example.com/gerogero/Maildir
配下にcur, new, tmp などのフォルダが作成され、タイムスタンプが届いた日時になっているはずである。わたし、ここで2週間躓きました。
###エラーはどこに吐かれるのか
だいたいこのへんです。だいたい
/var/log/maillog
/var/log/messages
journalctl -xe #パラメータ思い出せない
あと、systemctl restart postfix -l
だったかな?パラメータが思い出せませんけど、たしかこれでも一番新しいエラーが見られたかと思います。
###どんなエラーが吐かれるのか
ログさらってあとで書きます。だいたい上のファイルにはき出されてます。
#Gmail側の設定
##送信側
1. 設定 > アカウントとインポート > 名前 > メールアドレスを追加
名前:受信者に表示される名前?
メールアドレス:gerogero@example.com
SMTPサーバ:example.com
ポート:587
ユーザ名:gerogero
パスワード:87654321(こ↑こ↓記憶薄い)
SSL/TLS:なし
ここでSASLが入っていなかったり有効になってなかったりポートが開いて無かったりするとうまくいかない
2. Gmailに送信されたメールのリンクを開き認証する
##受信側
メールアドレス gerogero@example.com
ユーザー名 お好きに
パスワード /etc/dovecot-passwd で書いたパス
POPサーバー example.com
ポート 110
フィルターを作成してgerogero@example.com
(色付けると更に良し)のラベルを付けるとGmail宛と区別しやすくて捗る。フィルターとインポートの作成からTo:gerogero@example.com
, チャットは除く(チェックボックス)でラベルを作成(新規)でできる。
----%<----ここまでで設定がすべて完了したはずです----%<----
##再確認
ここまでできていれば、以下二点がエラーを吐かずにできるはずです。
・メールを受信すると、Gmail上にgerogero@example.com
というラベルがついて受信される
・gerogero@example.com
名義でメールが送信できる
受信確認の際は携帯などから送らないと、Gmailでの確認が混ざって分からなくなります。Gmailから送るのはやめましょう(戒め)
あと、1分経っても受信できてないなら、1日後にエラーで返ってくるので諦めましょう。
送信の確認もメールは複数宛に出してみて確認するのがよいです。画像なんか添付してみるのもいいかも。
###そもそも...
telnetが入ってない&環境汚したくない という初心者あるまじき理由からSMTP-Authのテストしてないです。
CentOSを必死こいて使い始めた時のApacheに躓いて、7回くらいOSから入れなおしてやり直しをした時のがトラウマになってますね。
testsaslauthdのテストはシステムユーザはOKってなります。どっか設定がおかしい。
#所感
トータル二か月近くこの問題を抱えて頭ハゲそうになりましたが、ようやく終わりました。CentOS触り初めでいきなりZone設定やらされて3か月頭抱えた時と同じような気持ちになりました。何度GoogleAppsに逃げようと思ったかわからんです。
終わってみればごくごく基本的な設定しかしてないんですけどね。あとまだSSL入れてないですし… QiitaではLet's Encrypt
が何やら熱いので、もしかしたらそれを入れるかもしれません。
##ちょっとでも参考にしたところ
こことか見てGmailアカウントではなく独自ドメイン路線に決定
>>> http://rcmdnk.github.io/blog/2015/04/16/computer-gmail/
インストールとかの手順はだいたいここから
>>> http://kajuhome.com/multi_mail.shtml
>>> http://kajuhome.com/postfix.shtml
SASL有効って書かないと動かないのか
>>> https://forums.ubuntulinux.jp/viewtopic.php?id=16208
問題はSASL認証?
>>> http://www.usupi.org/sysad/210.html
Apacheとかを立てた時はこっちのサイトを中心にして練習してました
>>> http://centossrv.com/postfix.shtml
http://tech.ckme.co.jp/mailv.shtml
http://www.postfix.org/SASL_README.html
http://yuumi3.hatenablog.com/entry/20130916/1379320836