spfレコード覚え書き
社内のサービスでメール配信したいからspfレコード書きたいんだけどという相談が来た。
そういう話は2回目だったのにあんまり覚えてなかったので、もう忘れないようにメモ
spfって?
このドメインのメールはこのMTAから送られてますよっていうのを明示的に示して、ここからのメールは大丈夫ですよという保証をしてあげる。送信元偽装対策とかかな。
このSPFをどう扱うかは、メールを受け取る側次第。
実例から見ていく
gmailとかどうしてんの?
hogehoge@gmail.comとかのメールアドレスだから、
gmail.comについてspfを調べていく。
$ dig gmail.com txt ;; ANSWER SECTION: gmail.com. 300 IN TXT "v=spf1 redirect=_spf.google.com"
gmailでは_spf.google.comのspfを使いますよってのを、redirectで指定してるみたい。
じゃ、_spf.google.comはどうなってんのか。
$ dig _spf.google.com txt ;; ANSWER SECTION: _spf.google.com. 300 IN TXT "v=spf1 include:_netblocks.google.com include:_netblocks2.google.com include:_netblocks3.google.com -all"
いろんなドメインのspfの設定をincludeしてるね。
includeしてる一つを見てみよう。
$ dig _netblocks.google.com txt ;; ANSWER SECTION: _netblocks.google.com. 3600 IN TXT "v=spf1 ip4:216.239.32.0/19 ip4:64.233.160.0/19 ip4:66.249.80.0/20 ip4:72.14.192.0/18 ip4:209.85.128.0/17 ip4:66.102.0.0/20 ip4:74.125.0.0/16 ip4:64.18.0.0/20 ip4:207.126.144.0/20 ip4:173.194.0.0/16 -all"
ようやくそれっぽい記述が出てきた。
説明していく。
v=spf1の部分
v=spf1ってのはSPFで定義されているSPFレコードを使いますよって宣言。
Sender IDのSPFレコードを使いたいなら
hogehoge.com. IN TXT "spf2.0/pra hogehoge -all"
みたいに書いていく。
ip4:216.239.32.0/19 -allの部分
見たらなんとなくわかるけど、ここのレンジから送られてますよっていう記述。
allってのは、ここからが全てという意味。
IP以外にも
hogehoge.com. IN TXT "v=spf1 a:mx.hogehgoe.com -all" <-Aレコード指定 hogehoge.com. IN TXT "v=spf1 mx -all" <-hogehoge.comのMXレコード指定
みたいな指定が出来るんすなー
ちななみに、なんかgmail.comのspfはいっぱいincludeしてんなーってのは、そもそもTXTレコードが255文字までしか記入できないから。
まとめ
なんか分かりにくい気がする。
ブログ力的な問題
ちなみに
http://www.sendmail.co.jp/sa/spfcheck.html
ここからspfのチェックが出来るよ。
送信アドレスと、MTAを入れてみてspfの記述と一致してるか調べてみてね。
今回の記事で言うと、
gmail.comのメールアドレスに対して
216.239.32.100のメール送信サーバーで通るよ。
実際にブログを書くために色々と調べていこうとしたのだが、
wikiのページがまとまり過ぎててブログとか今更書く必要ね~じゃん、となった。
http://ja.wikipedia.org/wiki/Sender_Policy_Framework
chef-solo使おうの巻
うふふ、ぽよぽよ
社内でNagiosの構築手順書くことになったから、
なんとなくchef-soloでやったらカッコイイんじゃないかと思ってchef-soloの勉強してみる。
chef-solo入れてみて
ここから使ってるOSとか選んでぽちぽちと
http://www.opscode.com/chef/install/
僕の場合使っているのがCentOS 6.3だったので、それで
最終的に自分のgitからcookbook持ってきてchef-solo動かすだけってのを実現したいから
gitもいれておこうね。
$ sudo su - # curl -L http://www.opscode.com/chef/install.sh | bash # yum install git -y # git clone git://github.com/opscode/chef-repo.git
今回は自分でレシピと設定を書いてみる。
取ってきたchefリポジトリのひな形にmemcachedを入れるレシピを書くよ!
設定書くよ
# vim ./chef-repo/solo.rb file_cache_path "/tmp/chef-solo" cookbook_path "/root/chef-repo/cookbooks" # vim chef-repo/test-memcached.json { "run_list": [ "recipe[test_mem::default]" ] }
れしぴ書くよ
# knife cookbook create test_mem -o cookbooks # vim chef-repo/cookbooks/test_mem/recipes/default.rb package "memcached" do action :install end
あら簡単
chef-solo動かすよ
[root@dev ~]# chef-solo -c chef-repo/solo.rb -j chef-repo/test-memcached.json Starting Chef Client, version 11.4.4 Compiling Cookbooks... Converging 1 resources Recipe: test_mem::default * package[memcached] action install - install version 1.4.4-3.el6 of package memcached Chef Client finished, 1 resources updated
動いた!
これで準備は大丈夫、Nagios用のレシピ書いてくよー
失敗履歴・その1/レプリ貼れない><
僕の失敗が人に役立てばいいなと思って、
Evernoteに溜め込んでる恥ずかしい失敗履歴を外に出していくことにした
レプリが貼れない
開発環境で、
MySQLマスター1台で動いていたものにSlave2台追加しようとしたというお話。
順番としては
- Masterでbin-log出るようにする
- Master再起動
- ポジション確認
- 更新かかってないので、ボゴーンと/var/lib/mysqlをslaveに渡す
- slaveで配置して、CHANGE MASTERしてstart slave
のはずが・・・・
mysql>show slave status¥G Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'
なんじゃこりゃ、見たこと無いぞよ。
binlog、何処ーってこと?
master側で確認してみる
[root@dbm01 mysql]# cat mysql-bin.index ./mysql-bin.000037
んー、ちゃんと指定してるし
実際のファイルもあるなー
ポジションが違うんかな?
もっかい確認してみるか
mysql> show master status;
お、応答がない・・・・^^;
んー、binlog書きだしてみるか
[root@dbm01 mysql]# mysqlbinlog mysql-bin.000037 > test.txt ERROR: Error in Log_event::read_log_event(): 'read error', data_len: 640, event_type: 24
こ、こんなエラー見たこと無い( /// )
binlog開けへん
binlog死んでしもたん?
mysqlのerrlogを見てみる
[root@dbm01 mysql]# less dbm01.err 130528 21:18:13 [ERROR] /usr/sbin/mysqld: Disk is full writing './mysql-bin.000037' (Errcode: 28). Waiting for someone to free space... (Expect up to 60 secs delay for server to continue after freeing disk space)
Disk Full wwwwwwwwwwww
そういえば、/var/lib/mysqlの容量がデカかったから一旦tarに固めてから転送したんだった。
tarで固めたのを消して、生のデータを送り直して
mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000037 | 496277 | | | +------------------+----------+--------------+------------------+
これで、
CHANGE MASTER したら通った
やった!
binlog壊したった!っておもったらすんごくしょうもない結末でした
まとめ
初歩中の初歩じゃないですか
MySQLバックアップ環境への道のり:1
AWSで作ったインスタンスに急にSSH出来なくなった
telnetしてみると
ssh: connect to host hogehoge port 22: Connection refused
ポートが開いていない。
Security Groupsを確認してももちろんSSHは許可してるし・・・・
なんでや・・・・
stop/start
Security Groupsの作り直しをしても駄目。
もうお手上げ┐(´∀`)┌ヤレヤレ
色々調べてみると、
EC2はGet System Logで起動時のログが見れるっぽい。
そこで怪しいLogを見つけた
Starting sshd: Missing privilege separation directory: /var/empty/sshd [FAILED]
あやしい・・・・
メモメモ
muninでtomcatの値が取れてなかった
なんで気付いたのって話
みたまんまmuninで値取れてへんねん
実際にサーバーに入って監視で実行してるコマンド打ってみた
[root@kakeru-kaeru01 wget http://munin:munimuni@127.0.0.1:8080/manager/status?XML=true --2013-05-07 16:23:52-- http://munin:*password*@127.0.0.1:8080/manager/status?XML=true 127.0.0.1:8080 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 405 Method Not Allowed 2013-05-07 16:23:53 エラー 405: Method Not Allowed。
405エラー・・・?
[root@kakeru-kaeru01 ~]# curl http://munin:munimuni@127.0.0.1:8080/manager/status?XML=true ??} hiɜ??} ????.????.??ccj%??yum ??֣+????%1?? ????01?mيI&???{?"???@?u??R??ن:?g?Ʈ ?T=??m]???????T+4?Q?'?&5]??C?A?oJ?VJ???k? ??_???]CR??0?0??o??[?MԘL?p????ؔ?Ȯe???\???P????3?2?8??y? ?e?N?$M?w}E?s?d?$?\C>:V;ï????????ڸi?dO?_???dl,`?t??)????]D;2WIpax??z???[Yh?mZ%X????&???_U
ど、どこの国に迷い込んだの・・・?
tomcatのログは?
2013-5-07 20:20:28 [http-bio-8080-exec-1] ERROR j.a.u.api.ExceptionHandlerController:132 - No matching handler method found for servlet request: path '/manager/status', method 'GET', parameters map['XML' -> array<String>['true']]
それっぽいのが出てる。
tomcat manager動いてへんの違う?
[root@kakeru-kaeru01 webapps]# ll 合計 4 drwxr-xr-x 4 tomcat tomcat 4096 5月 7 12:01 2013 ROOT
なんもあらへんやん・・・
詳しく聞いていくと、アプリの方が
「managerのディレクトリまんま消しちゃった(・ω<)☆」
とのことだったので、
[root@kakeru-kaeru01 webapps]# cp -iRp ../webapps.default_bak/manager ./
ばっくあっぷからまんま持ってきた
[root@kakeru-kaeru01 ~]# /etc/munin/plugins/tomcat_access accesses.value 305
わーい(∩´∀`)∩ワーイ
てすt
てsつ