だめねこ飼育日誌 By suteneko
リネ2関連で検索して来たかたはこっちのwikiのほうがいいかも // プロフィール


2016-02-14 (Sun)

[サーバ] AWSにメール制限の除外申請

AWSメールサーバを運用する方法は、大きくわけて2つあります。1つ目が共有のメール送信用ゲートウェイ(SES)に投げてリレーしてもらう方法。2つ目が外部サーバに対する25/tcp接続(SMTP)の制限を解除してもらう方法。


1番目のは、通常のSMTP接続じゃなくて、AWS APIとかcli経由になります。内部では暗号化してる模様で、secret keyが必要になります。postfixと連携する方法もあるんですが調べて設定するのが面倒なので今回は2番めの方法を取ることにしました。


2番目の方法は、普通のSMTPで外部接続できます。必要なのは、bounceなどの処理をきちんとすることと、英語でのやりとりです。bounce処理は、AWSにかぎらず当たり前のことなんですが、公式に記載があるためわざわざ記載してみました。なお公式スライドには「難しい場合は担当営業にご相談ください」と書いてあるんですが、会社契約ならまだしも、個人使用の場合は担当営業がついてるはずもなく…



申請したのは1週間前、2/7の夜でした。公式のスライドを見ての作業になります。うちの場合は、Elastic IPは取ってあるし、Route 53(DNS)も使用しているので、あとは申請するだけです。

ヘルプの該当項目「電子メールアプリケーションでの逆引き DNS の使用」から、Create Caseに飛び、ログイン。一番下のリンクから別ページに飛びます。あるいは公式スライドにあるようにAWSのHP下部「サービスの上限緩和を申請」でも同じところにたどり着くようです。制限タイプはEC2 Email

そして

こういうことになります。

申請内容は特に難しくありません。メールアドレス、何に使うかの説明(英語で記載)、自分のIP、逆引き設定をするホスト名。逆引き申請する前に正引きは登録しておく必要があります。

今回、使用目的は「自分のpersonal domainでメールを送る。自分と家族と友人しか使わないよ」って(英語で)書きました。


申請したのが週末だったためか、返信 (Your AWS Inquiryというメール)が来るまでに2日かかりました。日本時間では9日、現地? (+0000)時間で8日に返信がされています。Descriptionはいい加減な内容だった気はしますが大丈夫だったようで…。もちろん英語のメールです。DNS登録したよ、RBLからの除外には1週間くらいかかるよ、ってメールでした。


本日確認したところ、RBLから除外されていることを確認。AWS様ご対応ありがとうございました (←英語で書けよ)


まだ「IPアドレスからメールが送信できるようになった」だけで、送信の設定がされてません。そちらはこれからです…

本日のツッコミ

2016-02-18 (Thu)

某設定

とある設定のメモです。3(0~3の場合があるらしい)→2に書き換え


現行ver:設定はSQLiteで保存

# cd /data/data/jp.naver.line.android/databases

# /data/data/com.keramidas.TitaniumBackup/files/sqlite3 naver_line

sqlite> select * from setting where key="AU_USER_AGE_TYPE";

項目がある場合は書き換え、ない場合はinsertして良い模様

sqlite> insert into setting (key,value) values ("AU_USER_AGE_TYPE",2);

sqlite> .quit


古いver:設定はXML

# cd /data/data/jp.naver.line.android/shared_prefs/

# vi jp.naver.line.android.settings.xml

本日のツッコミ

2016-02-20 (Sat)

[サーバ] AWS上のposfixにSPFを設定

こちらの記事を参考に、SPFを設定してみてました。


このサーバでは、AWS上でAmazon Linux使ってるのですが、SPF用のパッケージが無い

…とおもったら、EPEL(Extra Packages for Enterprise Linux)のほうにありました。EPEL自体はAmazon Linuxに最初から入っていた模様。別にそんなミッションクリティカルな場所じゃないですし、3rd Partyのパッケージ使ってもいいよね…


というわけで、インストール

$ yum --enablerepo=epel install pypolicyd-spf.noarch


ドキュメントは /usr/share/doc/pypolicyd-spf-1.3.2 に、設定ファイルは /etc/python-policyd-spf/policyd-spf.conf にありました。

最初は Hard Fail ではなく、ヘッダにフラグを立てるだけにして、うまく動いていることを確認したのちに拒否にする、という運用です。

HELO_reject = False

Mail_From_reject = False


テストしてみたら動かない…

なんか、インストールしたときに python2.6 を依存関係でひっぱってきたのですが、使われているのが python2.7 で、ライブラリが見つからない模様。同じく依存関係で入った pyspf や pydns は python2.6 のディレクトリに入ってました。

というわけで /usr/libexec/postfix/policyd-spf を編集。ファイルの1行目を #!/usr/bin/python から python26 へ


自宅のほうから telnet したら、うまく動いたみたいです。(まだ設定途中なので自宅のみFWあけてます)

本日のツッコミ

2016-02-26 (Fri)

AWS上のdovecotでtcp wrapper

※※※やっぱりiptablesで行う方針にしたので、この日記の内容は途中で切れます&どこかに間違いがあるかもしれません※※※



imapとかの、パスワードを入力するサービスを使っていると、やっぱりアタックっていっぱい来ます。だから、接続元を日本国内に限った上で、不審なホスト (ブルートフォースアタックがあったホスト(侵入られてる?)とか) からのを落としたい。


家のサーバではdovecot+ipfw使って delegated-apnic-latest というファイルから変換していました。FWに相当するものはAWSにもあるんですが…何百行も書くの大変すぎる… (AWSのコマンドラインコンソール使えば解決するレベルの問題ではありますが)


というわけで、標準で入っている TCP Wrapper 経由でのアクセスということにしました。



そういう方針にする、って決めたはいいんですが、Amazon Linux の dovecot に対して ldd しても libwrap が見つからない。つまり TCP Wrapper 経由でアクセスできるようにコンパイルされていない。

あーもうどうしよう…


しばらく cyrus imap とか試した上で、やっぱり dovecot でいいや、移行めんどいし、ということにしました。



まずはAWSコンソールから、同じ設定の別マシンを作ります。セキュリティグループを自分のみしか繋げない設定にして、そちらでビルド作業をします。

また、怖いのでrootでの作業はしません。ホントはrpmbuild専用のユーザ(mockbuild)作るんですが、手を抜いて自ユーザでやっちゃうことにしました。



とりあえず yum から SRPMS を取ってきます。

$ yumdownloader --source yum
Loaded plugins: priorities, update-motd, upgrade-helper
(略)
Nothing to download

…なんだかしらんけど、無い、だと!? 拒否られた…Σ( ̄□ ̄;


調べてみたところ、どうも Amazon Linux では get_reference_source というコマンドを使うらしいです。blogによっては --aws-account-id を指定するとなっているものもありますが、現行バージョンでは不要の模様。

$ get_reference_source -p dovecot

Requested package: dovecot
Found package from local RPM database: dovecot-1:2.0.9-7.14.amzn1.x86_64
Corresponding source RPM to found package : dovecot-2.0.9-7.14.amzn1.src.rpm

Are these parameters correct? Please type 'yes' to continue: yes
Source RPM downloaded to: /usr/src/srpm/debug/dovecot-2.0.9-7.14.amzn1.src.rpm

というわけで、ダウンロードできました。コマンドは一般ユーザで実行できます。/usr/src/srpm ディレクトリが 1777 (sticky) になっているようです。



rpmbuild は入ってないので入れます。

$ sudo yum install rpm-build

設定

$ echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros


ファイルを取り出します

$ rpm -ivh /usr/src/srpm/debug/dovecot-2.0.9-7.14.amzn1.src.rpm

mockbuildユーザじゃないのでエラーが出ますが無視。

rpmbuildディレクトリに展開されるので

$ vi rpmbuild/SPECS/dovecot.spec

%configure に --with-libwrap を追加し、Requires: tcp_wrappers と BuildRequires: tcp_wrappers-devel を追加します。

そしてビルド

$ rpmbuild -bb ~/rpmbuild/SPECS/dovecot.spec 2>&1 | tee -a log.txt

1回目はBuild dependency入れてないので、エラーで終わります。必要なものを入れて再実行

で、完成です。



…なにか間違ったのか ldd dovecot しても libwrap が出てきませんでした。

iptables で設定する方針に変更したので、これ以上は追っていません。

本日のツッコミ