2010年09月30日

dateコマンドでUNIX timestamp を読める形に

FreeBSD の場合、UNIX time を人間が理解できる形、
2010年 9月 30日 木曜日 21:02:22 JST
という意味ですが、にするには
$ date -r 1285848142
とやるだけで済むんですが、Linux だと(正しくは GNU date だと)どうすんだ?と
いつも迷ってしまうので、備忘録として。
$ date -d "1970-1-1 GMT +1285848142 secs"
FreeBSD に比べると面倒ですね。。。
posted by おちエン at 21:17| Comment(0) | Linux | このブログの読者になる | 更新情報をチェックする

2010年03月08日

今さらですが、SpamAssassin の bug

SPAM メールをチェックしたところ、HAM が FH_DATE_PAST_20XX が原因で SPAM になることが結構あるようで、調べてみたところ、FH_DATE_PAST_20XX に bug があるようで、問題ないメールも FH_DATE_PAST_20XX にひっかかることが判明。 詳しくは、公式サイトのFH_DATE_PAST_20XXについてのページを参照。

もともとの rule が
header   FH_DATE_PAST_20XX      Date =~ /20[1-9][0-9]/ [if-unset: 2006]
describe FH_DATE_PAST_20XX      The date is grossly in the future.
となっており、2010年だと FH_DATE_PAST_20XX にひっかかるという。。。

# sa-update
# /etc/init.d/spamd restart
で対応完了です。

でどうなおったのかというと、
header   FH_DATE_PAST_20XX      Date =~ /20[2-9][0-9]/ [if-unset: 2006]
describe FH_DATE_PAST_20XX      The date is grossly in the future.
となっていました。

ちなみに結構前に対応されているようです。今さら気がつきましたが。。。
posted by おちエン at 23:14| Comment(0) | Linux | このブログの読者になる | 更新情報をチェックする

2010年02月20日

Postfix で "User unknown in local recipient table;"

Postfix を chroot で動かしていますが、あるユーザ向けにメールを送ると、
User unknown in local recipient table;
というエラーでメールを送れないという状態に。
Postfix には、
% postfix check
で設定をチェックできるというのがわかったので早速調べてみると、
/var/spool/postfix/etc/passwd and /etc/passwd differ
と出力されました。
chroot 環境なので、ユーザ追加や削除を行い、/etc/passwd が変わったら、/var/spool/postfix/etc/passwd にコピーしないといけないという話でした。
分かってみれば、当たり前のことですね。。。
posted by おちエン at 15:19| Comment(0) | Linux | このブログの読者になる | 更新情報をチェックする

2010年02月06日

postfixのinstall

今まで sendmail を使っていましたが、サーバ移行に伴い postfix にすることにしました。
postfix 自体は、http://www.postfix-jp.info/ に詳細な説明があるので、詳細なセットアップについては書きませんが、メモ的にいくつか。

1. /etc/postfix/virtual の更新

/etc/postfix/virtual を更新した場合、
# postmap /etc/postfix/virtual
が必要。

2. VRFY 無効

デフォルトでは VRFY が有効になっているので、main.cf を書き換えて無効にする必要がある。
# vi /etc/postfix/main.cf
disable_vrfy_command = yes

3. submission port の開放

ISP はほとんど outbound port 25 blocking を行っているため、submission port、587/tcp を利用しないとサーバにつないでメールを送ることができない。master.cf を編集して、submission の設定を入れる必要がある。
# vi /etc/postfix/master.cf
submission inet n - n - - smtpd
posted by おちエン at 15:06| Comment(0) | Linux | このブログの読者になる | 更新情報をチェックする

2010年01月13日

SQLRelay が無限ループで固まる件

先日、SQLRelay のセットアップについて書きましたが、SQLRelay を起動して、しばらく運用していると突然接続できなくなるという問題に遭遇しました。
SQLRelay の ML を調べてみると、同様の問題が報告されていました。
[Sqlrelay-discussion] I'm having to coninually restart sqlrelay. Why? という投稿です。症状を日本語に訳すと、
sqlrelay を起動すると、しばらくの間は問題なく動きます。
PHP と Perl の両方でデータベースにアクセスできます。
しかし、突然、PHP と Perl の両方でデータベースにアクセスできなくなりました。
sqlrelay は動き続けています。
sqlrelay を restart させると再度正常に動作するようになります。
まさに同じ症状でした。
この不具合に関して、この ML では解決策は出ていませんでした。
しょうがないので、調べてみたところ、
  1. sqlrelay を起動
  2. mysql を再起動
  3. sqlrelay 経由でデータベースにアクセス
という方法で再現することが分かり、さらに調べたところ、
bool mysqlcursor::prepareQuery(const char *query, uint32_t length)
が失敗することが判明。

解決方法として、sqlrelay.conf の connection の設定で
<connections> <connection connectionid="test_con" string="user=testuser;password=xxxxx;host=db.hoge.com;port=3306; db=testdbr;fakebinds=yes" metric="1" behindloadbalancer="no"/> </connections>
という風に fakebinds=yesとすることにしました。

この問題が起こったのは、SQLRelay 0.39.4 で、以前使用していた SQLRelay は SQLRelay 0.36.2 でしたが、0.36.2 ではこの問題は起こりませんでした。
0.36.2 のソースを見てみたところ、prepareQuery() で呼ばれる mysql_stmt_prepare() 自体が使われていませんでした。

ちょっとやっつけ感の強い解決方法ですが、同じ問題が発生している方はお試しください。
この解決方法以外では、
  • 定期的に sqlrelay を restart するようにする
  • 気合を入れて、prepareQuery() を修正する
がありますが、fakebinds=yes にするのがてっとり早い解決方法だと思います。
ラベル:SQLRelay
posted by おちエン at 20:42| Comment(0) | Linux | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。