独自ドメインのメールをGoogle Appsに移行するときのメモ
これまで自前のサーバで運用してた独自ドメインのメールサーバを、Google AppsのGmailに移行しました。その際に行った作業とハマッたことのメモです。特にGmailを使わずにメールソフトからアクセスする場合には、結構クセのある仕様になってるので移行前に注意が必要です。
メーリングリストに送信したメールが自分あてに届かない
Google Appsのグループ(メーリングリスト)宛てに、GmailのSMTPサーバ(smtp.gmail.com)から送信したメールは、自分自身には配信されない仕様のようです。これはGoogle AppsのGmailに限った話ではない様ですが、いままでGmailのWebインタフェース以外を使用したことがなかったので気づきませんでした。
- Thunderbird 2.0 - Gmail ヘルプ(POP クライアントから送信したメールをダウンロードできないのはなぜですか。)
- Gmailでメーリングリストに投稿したメールが届かない仕様について考えた
- GmailのSMTP経由で自分宛にメールを出しても、そのメールはPOPで受信できない(管理人日記) - むぅもぉ.jp
SMTPサーバから送信したメールでもGmailで確認すると"送信済みメール"に入っており関連するメッセージのスレッドにも表示されるためのようです。Google Appsだと必ずしも全員がGmailを使うわけではなく、いままで自分が使っていたメールソフトを使用してPOP/IMAPでアクセスするという人も多いので、これは不便だと思います。
このどちらかの方法で回避しています。
POPでメッセージをサーバーに残せない
複数個所からPOPでアクセスする場合など、メールソフトの"メッセージをサーバーに残す"という設定を使用しますが、この設定だけではサーバにメッセージを残すことができません。加えてPOPでログインする際のアカウントの先頭に"recent:"をつける必要があります。サーバにメッセージを残せるようになります。ただし、30日以内のメッセージのみのようです。
IMAPでアクセスすると「web login required」と表示される
IMAP経由で大量のメールのコピーなどを行うと「web login required」と表示されアカウントがロックされることがあります。その場合には、以下のURLにアクセスしてロックを解除あする必要があります("your_domain.com"には独自ドメインを指定)。
SPFの設定
Gmailを使用する場合にはDNSの設定でMXレコードを追加しますがついでにSPFの設定も行いました。
example.com. 86400 IN TXT "v=spf1 a mx a:mail.example.com include:_spf.google.com ~all"
こんな感じにしておきました。余計な記載があるかもしれませんが、私の環境でのポイントとしては、
- "include:_spf.google.com"は、smtp.gmail.comからメールを送信する場合に認証できるようにするための設定です。
- "a:mail.example.com"についてはこれまで使っていたメールサーバについての設定です。
Sender ID:送信者側の設定作業 −@IT
独自ドメインのメール送信を SPF に対応させる方法 - WebOS Goodies
プログラムからGmailのSMTPサーバを利用する
具体的には、CDO.Messageを使用してVBScriptからメールを送信する方法です。
Set objMessage = CreateObject("CDO.Message") objMessage.Subject = "テスト" objMessage.From = "test@example.com" objMessage.To = "info@example.com" objMessage.TextBody = "テストメールです。" objMessage.Configuration.Fields.Item _("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 ' SMTPサーバ objMessage.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com" '認証を使用するかどうか objMessage.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 'ユーザID objMessage.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "test@example.com" 'パスワード objMessage.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "パスワード" 'ポート番号 objMessage.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = "465" 'SSLを使用するかどうか objMessage.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True 'コネクションタイムアウト objMessage.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60 '送信 objMessage.Configuration.Fields.Update objMessage.Send
SSLを使用する場合にはポート番号を465とします(TLSではない)。
what's the difference btw. port 465 and 587 of the google apps mails - Learn More | Google グループ
また、デフォルトではFromで指定したアドレスとSMTPサーバで認証時のユーザIDは同じものになります(別のアドレスにしても認証時のユーザIDになります)。fromに別のアドレスを指定できるようにするためには、Webインタフェースの設定のアカウントにてそのメールアドレスを追加します。
独自に設定した From アドレスの追加 - Gmail ヘルプ
この場合でもSenderフィールドには認証時のユーザIDが設定されます。
実際のところ送信専用のアカウントを一つ作ってそれから送信する運用になるかと思いますが、smtp.gmail.comを使うとレイテンシが高くて、送信件数の制限などもあるようなので、本格的に使うのであれば自前のサーバの方がよいと思いました。