メールサーバの移行

イメージ
 自前のメールサーバを停止 これまで、自ドメインのメールサーバはVPS上に構築していた。 ・Ubuntu Server ・Postfix ・Dovecot ・spamAssassinと、BlackListの利用 Spam対策を行ってきたし、サーバ上でメールをトリガーにして各種プログラムを動かしたりしてきた。 メールサーバのメンテナンスは結構面倒くさくて、  ・Disk容量のチェック  ・不正アクセスのチェック  ・各種セキュリティパッチの適用 など、手間がかかる。 そこで、外部のサーバを利用することに…。 結構安くて使い勝手の良さそうなのが、「さくらのメールボックス」 3年契約で、3070円とな…。  メールアドレスは自分のだけなので、20GBまで利用可能!  (Gmailより大きいねぇ) ということで、早速契約。 アカウント設定を行って、既存のDNSを書き換える。WHOISも書き換えて完了。 SMTPとIMAPが利用できればOK。 ちょうど、GoogleがSPF設定していないと受信しないし、DKIMおよびDMARCに対応していないメールを弾くようになったので、対応しているのを確認。 さくらサーバ自体は、これまでお客さんのサーバとして何件も利用しているので、利用方法も難しくはない。  Webメールにも対応しているので、いざという場合にもありがたい。 ということで、各メールソフトの設定を変更。  PC(常時使用する3台)とタブレット、スマートフォンと台数は多いがそれ程手間はかからない。 問題は、旧サーバで送受信したメールの履歴だけれど、これはThunderbrdを使ってローカルに保存することで回避。  本当は、サーバtoサーバでMailboxに残そうとも考えたんだけど、古いメールはそれ程必要ないし、ローカルにバックアップしてあれば凌げるので、良しとする。 移行時にDNSの反映で若干時間がかかったものの、問題なく送受信できるのを確認して、作業完了。  これでメンテナンスの手間が減るので、安いもんです。

久々のPHPでハマる…。

長いこと使ってますが…

web系のスクリプトは、perlから始まりrubyとPHP4に手を出して、長いこと経ちます。もちろん、perl時代が長かったわけで、phpを経てrubyに慣れたものの、またphpに手を出したら、またperl文法に戻ってしまって…。行きつ戻りつを繰り返しているような錯覚を覚えてます。

で、今回は充分自宅環境でテストをして、動作確認をしたスクリプトを持っていったのはいいが、どうも動作しない。
どれだけ待ってもTIME OUTするじゃない…。
まあ、いつもは書かないけれど、デモンストレーションとして書いたものが…。
「fopenでURLを叩いても、ローカルファイルを叩いても、wrapperが同じように処理してくれるのよ〜」なんて説明をしたくて、用意したのに外部へ見に行くとタイムアウト。
仕方なく、ローカルネットワークで試すとOK。

そういうことですか…。外部はダメで、ローカルはOKとな…。もちろん自宅ではLocalhostと外部はテストしてありOKなんだけど…。
ちがいはproxyしかない。

proxy通してやるじぇ

そこまで分かれば簡単や〜とばかりに、システムのproxy設定を見る。
「はて?設定されとる」そうか、環境変数に書かれてないんだな。
と思い、
$ set | grep proxy
確かに、何も設定されていない。そうかそうか…。いひひ…。
$ export http_proxy=http://172.…:3128
export  ftp_proxy=http://172.…:3128
いつもの奴や…。と思いつつついでにftp側も設定。wget叩いたりして、ええやん!
「これで、満足したやろ!phpめ〜」と声には出さずに叫びつつ、スクリプトをブラウザから叩く。


しょんぼり

た、タイムアウト〜! 心のなかはアウト〜!
なぜだ…。そか、php5の設定か?と思いつつ、ググってみる。
php5.iniを確認し、allow_url_fopenをチェック。問題ない。
はぁ…と思ったら、fopenのwrapperはproxy非対応って…orz


PHPのManualページの下の方に、proxy使う場合はfsockopenで叩けみたいに書いてあるじゃんか…。
そういう仕様ですか…そうですか…。

<?php
/*************start code**************/
/*your proxy server address*/
$proxy = "192.168.10.1";
/*your proxy server port*/
$port = 8080;
/*the url you want to connect to*/
$url = "http://www.php.net/";
$fp = fsockopen($proxy, $port);
fputs($fp, "GET $url HTTP/1.0\r\nHost: $proxy\r\n\r\n");
while(!feof($fp)){
  $line = fgets($fp, 4000);
  print($line);
}
fclose($fp);
/**************end code**************/
?>
こんだけかいな…。これくらいならproxy対応しておいてくれよ〜。
結局、proxyサーバに直にリクエスト出してるだけだし…。

結局のところ
なれぬ手法を紹介しようとしたことが、第一の敗因。
そして、システム側が設定されていれば、上に乗ってる言語は対応しているだろうという思い込み。
最後に、全く同じテスト環境を用意できないこと…。

ちうことにしておこう。
どうせまた、忘れてしまうやろうし、こしょっと書いておけば、いつかまた会えるだろうw



コメント

このブログの人気の投稿

WPS Officeで日本語入力ができない

VirtualBoxでUSBから起動

Virtualboxとnvidiaドライバ