2014-01-22

正規表現のメモ

正規表現のメモ。

ぼちぼち増やしていきます。

1.du と find 使って、90日以前の日付ごとのログファイル容量を算出
# du -hc `find . -type f -name "*_log.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]" -mtime +89`


2.find で *.scc と Thumbs.db を探して消す
# find . \( -name '*.scc' -o -name 'Thumbs.db' \) -delete


3.grepでorするときは「\(hoge\|moge\)」、egrepでorするときは「(hoge|moge)」
# grep -e "192\.168\.0\.111.*\(GET\|POST\).*\.php.* HTTP" access_log.201412* > ~/201412.log

4.server-status から時間と起動プロセス数を抜く
grep -e 'Current Time\|requests currently being processed' /var/tmp/httpd_status_20140908.log

5.0x99AA形式を%99%AAに変換する EmEditor 置換
0xを消してから置換
検索文字列:([\d|\w]{2}+)
置き換え:%\1

2014-01-21

DNS ゾーンファイルの例

■正引きゾーンファイル

$ORIGIN example.dom.
$TTL 3600   ; 1 hour
@       IN  SOA     ns1.example.dom. hostmaster.example.dom. (
                    2014012345 ; serial
                    3600       ; refresh (1 hour)
                    1200       ; retry (20 min.)
                    1209600    ; expire (2 weeks)
                    900        ; minimum (15 min.)
)
@       IN  NS      ns1.example.dom.
@       IN  NS      ns2.example.dom.
@       IN  MX      10  mail.example.dom.
@       IN  TXT     "v=spf1 mx ~all"    ; SPF record

ns1     IN  A       123.123.123.121
ns2     IN  A       123.123.123.122
mail    IN  A       123.123.123.123
sv1     IN  A       123.123.123.124
www     IN  CNAME   sv1



■逆引きゾーンファイル

$ORIGIN 120/28.123.123.123-in-addr.arpa.
$TTL 3600   ; 1 hour
@       IN  SOA     ns1.example.dom.  postmaster.example.dom. (
                    2014012345 ; serial
                    3600       ; refresh (1 hour)
                    1200       ; retry (20 min.)
                    1209600    ; expire (2 weeks)
                    900        ; minimum (15 min.)
)

121     IN  PTR     ns1.example.dom.
122     IN  PTR     ns2.example.dom.
123     IN  PTR     mail.example.dom.
124     IN  PTR     sv1.example.dom.

2014-01-15

root宛のメールは転送してでも見ろ

root宛のメールを確認して見つけた障害。

・freshclamに失敗し、ウィルス定義ファイルが更新されていなかった。約3年。
・DBのバックアップが失敗していた。約1年。
・rsyncでの同期が失敗していた。約1年。
・apacheのログローテーションが失敗していた。約2ヶ月間のうち、3回。

・・・恥ずかしい限りです・・・

というわけで、root宛のメールをmailコマンドで確認するのが面倒だという方は、外部メールアドレスへ転送すべし!



# vi /etc/aliases
・・・
root:  hoge@example.dom,fuga@example.dom



複数アドレスへ転送する場合は、カンマで区切って記述する。

で、aliasesを修正したら、

# newaliases

2014-01-12

mb_send_mail()するならReturn-Pathを第5引数に

mb_send_mail()を使ってメールを送信する場合は、第5引数に Return-Path を指定する。

さもなければ、Return-Path は apache@hoge.dom (コマンドラインから実行したときは、実行アカウント名@hoge.dom)になる。

第5引数に Return-Path を指定する方法はこんな感じ

<?php
//  日本語だよって宣言して
mb_language('ja');

//  UTF-8で組んでるなら、文字エンコードをUTF-8に合わせて
mb_internal_encoding("UTF-8");

//  ヘッダーとReturn-Pathを指定して、mb_send_mail()
mb_send_mail("dare@doko.koko", "メールの送信テスト", "これは、メールの送信テストです。", "From:ore@example.dom", "-f ore@example.dom");


問い合わせフォームなんかでメールアドレスを入力させるインターフェイスがある。
問い合わせ者へ受付メールを送信するのが一般的だが、もし、問い合わせ者がメールアドレスを入力ミスした場合、550 unknown user の送信先は Return-Path になるため、正しく指定しないと誰も間違いに気づかない。

まぁ、問い合わせ先の担当者が、問い合わせ者が入力したメールアドレスへメールを送れば気づくけどね。
どうせなら、最初から気づいた方がいいと思うけど。

.htaccessで403を404で返す

久しぶりにリライトルールを書いたよ。 ドキュメントルートに.htaccessを置く場合の記述↓ # 403.html は実体がなくてよい。この設定をすることで、あっても使われなくなる。 ErrorDocument 403 /403.html # 独自の404ページをドキュメ...