|
ようやくわかった凶悪なcoreserverとgmailの相性 |
|
|
2010年5月14日(金曜日) 20:22
|
お世話になりすぎてるCORE様
coreserver使ってるんだけど、マジメールおくれなくて困るアカウントがある。
で、検索しまくってでてこなくて、ようやく諦めた時に突き当たった同じ人の話が出てた。
なるほそ。
いわゆるメールサーバというのは、SMTPというプロトコルによってメールをサーバからサーバへ転送する。
このSMTPというのは元々サーバも受信者も送信者もなにも区別がないプロトコルで、「SMTPサーバからSMTPサーバへどんどんタライまわしをしているといずれ受信サーバにたどりつく」というとてもアバウトな仕様なのです。
メール送信時にのデータを送るSMTPとメールサーバ間でメールのデータをやりとりするときに使われるSMTPは全く同じ。
つまり、世界中からサーバを中継してSPAMも送り放題な仕様となっている。 これを第三者中継っていうんだけど、
それを防ぐために、
特定のIPからしか送信できないようにする。 →プロバイダのSMTPサーバが、そのプロバイダの利用者IPのみに中継を許可する。
SMTP-AUTH等の認証。 →少なくともID/パスワードを確認するので、正規のID/パスワードを持つ利用者のみに中継を許可できる。
POP before SMTPという特殊な方法を利用する。 →メール送信前に1度メールを受信させることで、そのIP利用者に短時間だけ(1~5分程度)中継を許可する。
という方法があるわけ。
どうしてもホテルやモバイルパソコンからメールを送信したいとなったときに必ずしも同じプロバイダを利用できるとは限らないので、複数方法があるのだねぇ。
以上はあくまで送る側の話。
同時に、受ける側を考えると、SMTPサーバは送るためのサーバであると同時に受信サーバでもある。
このままだと何処から送られてくるかわからない自分宛のメールを受け取れなくなってしまうので、自分宛のメールは無条件で受け取るという設定をしている。 ↑ これが凄い
んで、CORESERVER
CORESERVERは送信メールサーバ=受信メールサーバ CORESERVERはPOP before SMTPのみ対応(SMTP-AUTH未対応)
CORESERVERで普通にメールを設定して、メールを送ろうとしたらエラーメールが帰って送信できん!!
内容を訳すと
「あなたのSMTPサーバは送信元ホスト許可リストに入っていません」
色々検索してみたところ、よ~~~~~~~~~やく原因がはっきりしました。
POP before SMTPのタイムアウト時間設定が3時間over POP before SMTPでsenderhostsリストに登録されると、そのIPからのSMTP接続はすべて外部への中継として受け取る
つまり、
- SMTPサーバでもあるIPで、CORESERVERからメールを受信する。
- CORESERVER側でsenderhostsに登録される。
- 手元のSMTPサーバからCORESERVER宛にメールを送信する。
- CORESERVERはsenderhostsに登録さているという理由だけで、外部から自分宛のメール送信を強制的に内部 (CORESERVER)から外部へのメール送信と見なす。
- CORESERVERは外部へのメール送信のとき、予め登録された自ドメインとSMTPのFROM(SMTPにおけるFROMであるのでFROMヘッダとは異なる)が一致しないためメールを拒否する。
- CORESERVERは自分宛のメールを552のエラーとして受取拒否する。
そして、困ったことにおそらくsenderhostsのリストはサーバごとに全ユーザ共有だと思われるのでたとえ自分でPOPしていなくても時々メールが送れないサーバが出てくる。
マジはまる。
っていうかハマった。
Gmailには、Gmailに統合してあるアカウント名義でメールを送信するため等の目的で外部SMTPサーバを使用してメールを送信する機能があるので、それを使うとバッチリメールが送れなくなるという理由。
これをしないと、GmailではFromの代理送信表示がされてしまいます。 バレバレのやつね。
知らないで使ってたわ今まで。
ようやく判明。
|