ConoHaからGmailへメール送信が出来ない:その2(解決)

2014/04/20 | メール

Gmailにメールが送れない理由がようやく分かった。

色々調べると、どうもメールを送信しているサーバがGmailのサーバとIPV6で通信していて、そこで逆引きがどうとかなんとかかんとか・・・、メールが届かないらしい。正しく送信できていた時と比較して、サーバの設定を変更していないから、ConoHa側の何かが変更になったか、Gmail側の設定が変更されたのか(こちらの確率が高そう)、どうやらそれが原因らしい。

postfixの設定(main.cf)で、「inet_protocols = all」の記述を「inet_protocols = ipv4」に書き換えて、postfix再起動で見事メールが送れるようになった。

参考にしたページはこちら。

http://www.jitaku-svr.info/index.php?postfix_トラブルシューティング

上記のページにあった以下のメールサーバのログの記述は、こちらのサーバには見つからなかった。

warning: inet_protocols:
IPv6 support is disabled:
Address family not supported by protocol
warning: inet_protocols:
configuring for IPv4 support only

諦めかけていただけれど、よかった。他のサーバも設定変更しておこう。

ConoHaからGmailへメール送信が出来ない:その1

2014/04/20 | メール

設定した当初は大丈夫だったはずなのに、今日試したらConoHa VPSからGmailへメールが送信できなくなっていた。他のVPSからは正常に送信できている。しばらく放置していたのだけれど、スパム対策はしてあるので、Gmailへスパムを送信していたとは考えにくい。

こんな具合にエラーが吐かれている模様。

Our system has detected 550-5.7.1 that this message is likely unsolicited mail. To reduce the amount of 550-5.7.1 spam sent to Gmail, this message has been blocked.

今まで特に設定していなかったのだけれど、以下のページに習って対策をすることにした。

http://server-setting.info/blog/gmail-spam-check-list.html

まずはSPFから。

ConoHaのVPSで設定してあるドメインはムームーDNSで管理している。ここに記述を追加した。

サブドメイン欄:空白
種別:TXT
内容:「v=spf1 a mx ~all」

「v=spf1」の部分は「バージョンはSPF1を使う」という意味らしい。

「a mx」の部分は「aレコードとmxレコードに登録されたアドレスが有効」ということらしい。

「~all」の部分はいろいろ説明を読んでみたけど、よく理解できない。でもどこのページでもだいたい「~(チルダ)」になっているので、これで設定した。

すぐに反映されるかどうかもわからないけど、DNS関連の設定ならキャッシュの問題とかもあるので、明日以降再度チェックしてみることにする。

crontabの影響でmaillogにエラー

2012/08/15 | VPS, メール

新しくセットアップしたKagoya Cloud/VPSをセットアップしている。このサーバは基本的に外部にサービスの提供をするためのサーバではなく、バックアップや情報収集用として使用するためのサーバだ。バックアップファイルをさらにバックアップするためのサーバでもある。

このサーバで稼働させるサービス(自分用)の第一弾として、各サーバのポートの稼働状況をチェックするプログラムを仕込んだ。各サーバにはそれぞれ自分がオープンしているポートを知らせるプログラムを仕込んである。10分おきにプログラムを起動し、各サーバのヘルスチェックをして、以上を検知した場合にメールで通知するという仕組み。

最初は機嫌よく動作していると思っていたのだが、ふとmaillogを見るとエラーが出ている。

Aug 14 15:20:02 sub postfix/sendmail[16596]: warning: the Postfix sendmail command has set-uid root file permissions
Aug 14 15:20:02 sub postfix/sendmail[16596]: warning: or the command is run from a set-uid root process
Aug 14 15:20:02 sub postfix/sendmail[16596]: warning: the Postfix sendmail command must be installed without set-uid root file permissions

んー、見慣れないエラーだ。ということで調べてみた。どうもCentOS6で生じて、cronを使うことによって発せられるらしい。そしてcronをチェックしたら、コマンドの最期に「> /dev/null 2>&1」をつけるのを忘れていた。cronからログをメールを送信する時にエラーが生じるようだ。ということで、上記をコマンドに付け足し、エラーが出なくなったことを確認した。

.forwardでパイプしたプログラムでメール本体を取得するには

2012/08/13 | メール

.forwardでメール受信をトリガーとしてphpを起動することはできたが、どうやってメール本文をphpで取得するんだっけ。過去に何度もやっているのに、こういう大切なことをメモしていないなんて、テクメモの意味が無い。

$fp = fopen( ‘php://stdin’, ‘r’ );

これでファイルポインタをオープンし、あとは通常のファイルと同様に読みこめばOK。これでヘッダから本文までメールの全てを受信することができる。あとはメールをデコードするライブラリにでも突っ込んで処理すれば楽ちん。

単にメール本文を取得するだけなら、上記で取得したテキストの改行が連続する部分(最初の)で二つに切り分けて、後部を取ればいい。送り先、送信元のメールアドレスを取得したいなら$_SERVERから値を取得できる。単純処理ならライブラリ不要だ。

他にも簡単に値を取得する方法があったような気がするけれど・・・思い出せない。

.forwardのパーミッション

2012/08/12 | メール

.forwardでメールの受信をトリガーとしてphpにパイプする際、どうしてもパイプできなかった。プログラムが間違っているのかと思って「php -l」してみたけどエラーはないとでる。何故だろう。

.forwardのパーミッションを調べたら644になっていたのだが、これを600に変更したら動作してくれた。わかっていたつもりでも忘れていることは多々あるようだ。

ただ、いろいろ触った結果動作したので他に原因があったのかもしれないけれど。

 


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net