Translate

2011年10月19日水曜日

docomoメールサーバの怪

独自ドメインのメールサーバを構築して エイリアスを1つつくり そこにdocomo携帯のiモードメールアドレスを 5つほど登録して、 テストメールを送信したら、


This is the mail system at host fugafuga.hogehoge.co.jp.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to postmaster.

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

                   The mail system

 (expanded from ):
    host mfsmax.docomo.ne.jp[203.138.181.112] said: 550 Unknown user
    bar@docomo.ne.jp (in reply to end of DATA command)
 
というエラーメールが返ってきた。

で、
いろいろ検索してみると..

..ああ、みんな悩んでる..

しかも、理由がまちまちだ。


一部調べたものをあげてみる


ドコモ携帯の「550 Unknown user」エラーは「あてにならない?」
・Fromヘッダに存在しないメールアドレスの場合発生

postfixでdocomoやyahooなどのメールアドレスに送信できない
・MXレコードのないドメインから送信

メールがエラーで返ってきたのですが
・受信者の拒否条件に合致した
・ドコモ側サーバで大量送信等の理由で迷惑メールとみなされて拒否された

パソコン(PC)から携帯電話(ケータイ)に届かないメール
・最近の携帯電話は、標準でPCからのメールを拒否する設定になっている
・「受信拒否強」の場合エラーメール到着するがメールは送信されない

携帯電話へのメールが送信できない
・自ISPのSMTPで配送するとうまく送信できる
・docomoドメインの場合、プロバイダISPへ転送する設定をすれば良い

[postfix-jp: 3488] Re: docomoに関するリターンメールの読み方について
・DoCoMoは過剰な(偏執的ともとれる)な迷惑メール対策を施している可能性



..偏執的って..
相当迷惑メールで辟易してたんだろうなあ..

すくなくともUserがunknown以外でも
このエラーがでることだけはわかった。



本家docomoには以下のような情報があった。
[docomo]送信ドメイン認証(Sender ID/SPF)について
・送信元アドレス・DNSサーバMXのIPアドレスが違う場合拒否
・当該IPアドレスがDNSサーバに存在しない
・SPFレコードがある場合Fromと比較する

[docomo]同報メールを大量に送信されるお客様へ
・存在しないアドレスを含む同報送信の場合拒否or遅延
・大量の同時セッション要求に対しては一時的に接続を制限
・1SMTPセッションあたり100宛先まで
・そのエリアでの通信量が急激に増加した場合
・毎正時にメール送信要求が集中
・携帯電話が電源OFF、または圏外時

ってことは、
一度に100件以上はdocomoアドレスへ送信できないのか..
まぐまぐとか商用MLサービスとか苦労したんだろうなあ..

#そういえば(ずーっと昔だけど)リクナビで携帯アドレス
#登録禁止とかだったなあ..
#必ず届くかどうか分からないメールって..インドの電気みたいなものか..

よく考えればそうかと納得できるけど、
cronなどできりのいい時刻の定時処理で送信されるメールは
遅延、失敗する可能性があるなんてことも
改めて築かせてくれた。


メールサーバを設計する側からすると、
すくなくとも独自MXを立てたグローバルIPは
正逆両方ひけるようにして、
送信サーバがMXレコードのIPと異なる場合は
SPFレコードを定義してドメイン範囲を設定しておく
ことは 必要そうだ。


あとは、 main.cf(postfix)のtransport_mapsへ
信頼性の高いSMTPサーバを書く。
..これは私は残念ながらできないかな..


それでも圏外、OFF、迷惑メール設定、きりのいい時刻、
トラヒック混雑時はエラーメールが出るかもしれないけど..


2011年10月18日火曜日

シェル変数に!だけ入っている場合のif文評価に気をつけよう

今日はとっても基本的なUNIXシェルで引っかかってしまった..

あるサーバ(Linux)マシンで
パスワード有効期限をchageで指定して 運用しているのだけど、
パスワード有効期限を警告するメールを
直接ログイン出来ない状況でわからないものか、
いろいろGoogleってみたら 以下のサイトを見つけた。

パスワード変更していない日数



これさいわいとスクリプトをコピーして
実行させてみたのだけど、
 
[: =: unexpected operator

というエラーがでた。



..これは神様がズルすんなといっているのかも..

やっぱり自分で汗かかないとダメか..


で、調べてみると
 /etc/shadowの2カラム目を変数pwdに格納し'!'と比較している部分があって


if[ "$pwd" != '!' ...

という行の評価でエラーに成ってることがわかった。


!ああ
"$pwd"が!に置換されて、
シェルが


if[ ! != '!' ...

を評価しようとしててあのエラーがでてたのか..


なので、
 
if[ " $pwd" != ' !' ...

のように
$pwdと!の前に半角スペース1個いれてみたら
うまくいった..
#いやー、べったべたな対処法だ..


こういう単純な所で引っかかるとは...

忘れないように
ブログに載せとこっと。


p.s.
じつはこの記事が私の書いたブログで
最もアクセス数の少ない記事です。
ワースト2がGoogle waveのロボット。

..いや、特に意味はないですけど..

既存アプリケーションをK8s上でコンテナ化して動かす場合の設計注意事項メモ

既存アプリをK8sなどのコンテナにして動かすには、どこを注意すればいいか..ちょっと調べたときの注意事項をメモにした。   1. The Twelve Factors (日本語訳からの転記) コードベース   バージョン管理されている1つのコードベースと複数のデプロイ 依存関係 ...