自宅サーバ ~メールサービスの2重化?~

結論から言うと、こうなった。

Gmail(Google Apps無料版)でメールを全て受信する。
  ↓
fetchmailでPOP3で自宅サーバに取り込み。
  ↓
postfixで各ユーザに配信する。
  ↓
davecotがIMAP4でサービスする。
  ↓
各自メールクライアントでIMAP4で見る。

こうすることで、自宅サーバが死んだとしても、Gmailが受信しておいてくれるし、そんなときはGmailのWEBメールで自宅サーバ復旧までしのぐ事が出来る。
2重化というかは微妙だが、とにかく自宅サーバが死んだとしてもメールを受信し続けることが可能になった。
ここで、Gmailに大きく依存することになるが、自宅サーバ1台に比べれば、GmailはMXレコードが7個もあるので信頼性は比べ物にならない。

さて、レシピと行きましょうか。

まずは、postfix、dovecotをインストール&設定。方法の記述は端折るw。

次に、Google Apps標準版(無料)を申し込む。ドメインを持っていることが必須だ。
申し込み方法、設定方法は下記。

  1. Google Apps標準版を申し込む。
    • 管理者を選択して、自分のドメイン名を入力。
    #このとき、情報発信用のドメイン名を入力した。
    #家族用(メール用)ドメイン名は後でエイリアスとして登録した。

  2. 申し込みが終わったらGoogle Appsの管理画面で設定を行う。
    • エイリアスのドメインに家族用ドメインを登録する。
    • 「ドメインの所有権を確認」する。
    「HTMLファイルをアップロード」を選択して、ドメイントップに指定されたようにHTMLファイルを作成、設置する。
    これは、メインのドメインとエイリアスのドメインの両方で行う必要がある。
    • 自宅サーバに登録してあるメールアカウントを同じように全て登録する。
  3. DNSの設定を行う。
  4. 利用しているDNSのレコードを変更する。
    ちなみに、当ドメインはVALUE-DOMAIN.COMで取得したので、ここのDNSを利用している。
    DNSの変更が完了したら、Google AppsのMXレコード変更画面で「指定された手順を完了しました」ボタンを押す。

以下、VALUE-DOMAIN.COMでのDNS設定変更

a @ [IP address]
mx @ 10  ★この行を削除★
★以下を追加★
mx ASPMX.L.GOOGLE.COM. 20
mx ALT1.ASPMX.L.GOOGLE.COM. 30
mx ALT2.ASPMX.L.GOOGLE.COM. 30
mx ASPMX2.GOOGLEMAIL.COM. 40
mx ASPMX3.GOOGLEMAIL.COM. 40
mx ASPMX4.GOOGLEMAIL.COM. 40
mx ASPMX5.GOOGLEMAIL.COM. 40

ちなみに、MXレコードにGoogle以外のものが設定されていると、2日後にGmailが使用できなくなる。
筆者も一度は自鯖をプライマリMXに、GoogleをセカンダリMXに指定してチャレンジしたがあえなく撃沈。
ちなみにちなみに、有料版のGoogle Appsを利用するとセカンダリMXに指定できるらしいが、1アカウントあたり年額6000円と高額だw。

次、Gmailの設定。
うちではGmailをSMTPに使っている。なぜなら、自鯖がスパムの踏み台にされると嫌だから。お手軽だから。
で、GmailのSMTPを使い、複数ドメインのメールアドレスを管理する場合、下記を設定しないとFromがGmailのアカウントに書き換えられてしまう。
#ただし、SenderがGmailのアカウントで固定で追加されてしまう。そのため、多少見られても構わない情報発信用メールアドレスをGmailアカウントに設定するのが吉。
  • 「アカウント」-「名前:」-「メールアドレスを追加」でにエイリアスに設定したドメインのメールアドレスを追加する。
  • 「アカウント」-「名前:」-「メッセージの受信時:」は「メールを受信したアドレスから返信する」を選択
  • 転送 無効
  • POP 有効 & POPを使用する場合:すべてのメール、メールのコピーを削除(これを設定しないとクライアントから削除できないらしい。)
  • IMAP 有効

参考:いそっちノート [tips] Gmailで独自ドメイン(Value Domain)を使う


次にfetchmailの設定。
まず、/etc/fetchmailrcというファイルを下記内容で作成する。
set postmaster root
set nobouncemail
set logfile /var/log/fetchmail.log

defaults
protocol pop3
flush
no mimedecode
smtphost localhost

poll pop.gmail.com
port 995

user [pop account1] with password [password1] is [local user1] here ssl
user [pop account2] with password [password2] is [local user2] here ssl
......以下、家族分
GmailのPOP/IMAPはSSL経由でしかアクセスできないが、sslオプションはuser毎に指定する必要があるらしい。

下記コマンドで設定を確認。ログがうじゃうじゃ出てきます。
fetchmail -v -f /etc/fetchmailrc

設定が確認できたら crontab -e で3分毎に取得するよう設定。
*/3 * * * * fetchmail -f /etc/fetchmailrc
追記:2009/06/21
/etc/fetchmailrc の所有者でないとこのコマンドは動かない。
fetchmailユーザってゆーのが勝手に出来てて、それが所有者になっている。
ということで、crontab -e への書き込みは、fetchmailユーザの方で行う。
また、/var/log/fetchmail.log の所有者もfetchmailユーザになっているか確認する。

参考:
以上。