Postfix での Port 25 Blocking 対策

Outbound Port 25 Blocking により、外部にSMTP が通せない環境でメールサーバを運用する場合、次のいずれかの対応方法をとる必要があります。
1.プロバイダのメールサーバに転送する
2. サブミッションポート(Submission Port)が使える外部のメールサーバに転送する
 
1 の場合で認証が不要な場合は、main.cf に以下を加えることで簡単に対応することができます。
main.cf:

relayhost = smtp.nifty.com

smtp.nifty.com は自分のプロバイダの SMTP サーバに置き換えてください。
 
1 で認証が必要な場合、あるいは、2 の場合は普通認証を必要としますが、この場合は Cyrus SASL 対応の Postfix を使うことで、認証付きのリレーが可能になります。
main.cf:

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/saslpass
relayhost = [smtp.nifty.com]:587
smtp_use_tls = yes # optional

relayhost は自分が使う SMTP サーバ、ポート番号に置き換えてください(587 はサブミッションポートを使う場合)
 
次に、smtp_sasl_password_maps で指定したファイルを作成します。
saslpass:

# 書式:”relayhostに指定した値”<space>”認証ユーザ名”:”認証パスワード”
[smtp.nifty.com]:587 user:pass

作成後、postmap で saslpass.db を生成します。

$ cd /etc/postfix/
$ postmap saslpass

 
このままでも動作しますが、ここでセキュリティを考慮するのであれば、元としたプレインテキストのパスワードファイル saslpass は削除しておくべきでしょう。

$ rm saslpass

 
あとは Postfix を再起動し、好きなメーラを使って動作確認を行えば完了です。ここでは CUI の mail コマンドの例を示します。

$ mail -s test foo@example.com
hello, world
.

(foo@exmple.com は自分が確認できる任意のメールアドレス)
 
参考:
Re: プロパイダのsmtpホストが smtp authを要求してる場合(Postfix-jp ML:1685)
  ぷらら環境での Postfix 設定。
25番ポートブロック対策について(Fedoraで自宅サーバー構築BBS)
  @nifty 環境での Postfix 設定。
Postfix で、Gmail にメールをリレーする(私の二次記憶)
  Postfix + Gmail
postconf(5)(Postfix 日本語マニュアル)

特定のサイト上の変数を動的に操作する

[2005-06-22-1],[2005-01-14-3]でも書きましたが、

javascript:…

というURI スキームについてですが、当然これはそのままブラウザの URL として指定できます。
 
javascript: 以下には、任意の JavaScript コードを指定できるので、ブラウザ(IE, Firefox, Opera でもなんでも)を有用な簡易 JavaScript デバッグ環境として利用することができます。
 
例えば、任意のサイトで変数 foo の現在の値を閲覧したい場合は、そのサイトを表示した状態で

javascript: alert(foo);

とすればよく、逆に foo の値を変更したい場合は
 

javascript: foo=”new value”; focus();

などとすればいいわけです( 最後の focus() は画面遷移を防ぐ目的)。
 
実例を挙げると, こちらで紹介されている、モグラたたきゲームのサンプルは、ソースによるとten が点数なので、ゲーム動作中に

javascript:ten=50000;focus()

とする事で得点が50000 点になります。
動作検証をする場合に、ソースに変更を加えることなくテストができるので、開発後のメンテナンス時に役立つのではないでしょうか。
 

実行中の画面
実行後の画面

UIEngine

UJML という XML ベースの言語により、さまざまな環境(PC,Mobile)で動作するアプリケーションが作成可能になる、というものです。
UIEngine という、環境の差異を吸収するエンジンにより実現しているようです。
開発環境の非営利目的での利用は無償ですが、UEIジャパン社に営利目的の場合は要連絡とのことです。
 
Life is beautiful
 UIEジャパンCEO中島氏のブログ。
 
UIEngine WiKi
 
株式会社UIEジャパン
 開発、配布元。
 
UIEngineだ
UIEngine について色々書かれてます。

chalow 1.0rc4 から1.0rc6 に

思い立ってバージョンしました。
セキュリティ面で問題があるというわけではなかったのと、自分で好き勝手にカスタマイズしているので、手間を惜しんで更新していなかったのです。
 
こういった作業の時に diff は便利ですね。
 
ところで chalow 1.0 rc6 が出たのが 2005-08-21 ということなので、2年近く前の更新を今更やったわけですが、一番最初のエントリ(当時は非公開)が [2004-08-27] だという事実に驚きです..
 
光陰矢の如し。
これからもマイペースに続けるつもりなので、末永くよろしくお願いします。

bind で設定が反映されない場合の原因と対策

– named.conf の場所が違う, または権限が不足している
  named の起動オプションで

named -c /etc/named/named.conf

   のように -c で設定ファイルへのパスを指定してみましょう。
 
– 名前解決で自分を見ていない
  > nslookup example.com 127.0.0.1
  または
  > dig @127.0.0.1 example.com
  でDNSサーバを明示してみます。
  これで解決できるなら、解決先が正しくない可能性が高いです。
  たとえば UNIX 系なら /etc/resolv.conf で
  > nameserver 127.0.0.1
  のように解決先を指定していない可能性があります。
 
– 設定ファイルの文法が間違っている
  文法が間違っていると、黙ってその設定ファイルを無視します。
named.conf と zone ファイルの文法を次のコマンドでチェックしてみましょう。

named-checkconf <named.conf のパス>
named-checkzone <ゾーン名> <ゾーンファイルのパス>

 
具体的にはたとえば次のようにします。

named-checkconf /etc/named/named.conf
named-checkzone example.com /etc/named/example.com.zone

これを実行し、named-checkconf の場合何も表示されなければ、named-checkzone の場合最後に OK と出れば、そのファイルの文法は正しいということです。
 
文法が間違っている場合、エラーメッセージが出力されるので、それを元に正します。
 
– 設定ファイルの変更後、DNS をリロード/再起動していない
  設定ファイルは、リロードまたは再起動しないと即時反映されません。
  > /sbin/named.reload
  などとして、明示的にリロードすることで直ちに反映されます。
 
参考:
@IT:実用 BIND 9 で作る DNS サーバ

MySQL の公式 GUI 管理ツール

MySQL GUI Tools Downloads(MySQL AB)にある、MySQL Administrator が便利なのでお勧めです。
 
Windows 版 ver. 5.0-r10 の直ダウンロード
 

接続方法:
– インストール後、スタートメニューから MySQL -> MySQL Administrator を実行する
– Stored Connection の … をクリック
– 左の General Options を選択(パスワードを保存したくない場合これは不要)
  – Store Passwords にチェック
  – Password storage method を Obscured にしておく
  – Apply ボタンをクリックして設定を保存
  – 左の Connections をクリックして戻る
– 下の new Connection ボタン
   Connection: 分かり易い名前(例: ユーザ名@ホスト名)
   ユーザーネーム: ログイン名(例: foo)
   パスワード: ログインパスワード(例: pass)
   Hostname: 接続先ホスト名(例1: www.example.com , 例2: 192.168.0.10)
   ポート: 3306
   Schema: 接続先DB名
   以下デフォルト。
– Apply ボタンで設定を保存、Close ボタンで閉じる
– Stored Connection のコンボボックスで、2で作った接続を選択
– OK ボタンで接続

 
接続後、カタログから、データベース(このツールでは Schema と呼ばれる)の操作や、テーブルの作成、編集ができます。
 
テーブルの中身を閲覧したい場合は、クエリブラウザを使うと便利です。
クエリブラウザを実行するには、MySQL Administrator の Tools メニューから MySQL Query Browser を選択します。
 
MySQL Query Browser の使い方は大体直感でわかると思いますが、上部のテキストエリアに

SELECT * FROM db1.footable;

のように SQL クエリをいれ、Execute ボタンを押せばクエリが実行され、かねやんMySQLAdmin などのように結果が一覧表示されます。
また、右の Schema からテーブルをドラッグ、上のテキストエリアにドロップすれば、そのテーブルの SELECT クエリが自動生成されます。
 
MySQL Administrator のその他の機能や使い方についてはこちらを参照してください。
【MySQLウォッチ】第6回 管理者向け新GUIツールMySQL Administratorを検証

CUI メーラーを使う

– ローカルにあるメールを読みたい
– メールサーバにあるメールを POPや IMAP 経由でいちいちダウンロードすることなく SSH でつないでそのまま読みたい
 
という場合に便利なのが、mutt というCUI メーラです。
 
日本語対応版パッチ, RPM はここからダウンロードできます。(FreeBSD の ports では mail/mutt)
 
利用の際はMutt Japanese Editionにある、日本語マニュアルが大変参考になります。
 
たとえば

mutt -f ./Maildir

とすれば、カレントディレクトリの Maildir を参照し、その中にあるメールの閲覧、削除、返信等ができます。

q:中止 d:削除 u:復活 s:保存 m:メール r:返信 g:全員に返信 ?:ヘルプ
   1 May 31 **** project ( 0) [*****] 登録内容確認のお願い
   2 Mar 21 Charlie Root ( 0) ClamAV Scanning Report
   3 O Mar 21 Charlie Root ( 0) www.ecoop.net security updates
   4 O Mar 21 Charlie Root ( 0) test
   5 Mar 21 Cron Daemon ( 0) Cron <root@local> /root/sbin/task.sh
   6 N Mar 21 ********* ( 0) <<重要>>「******」登録依頼用認証コード
   7 N Mar 21 ********* ( 0) <<重要>>「*******」登録依頼用認証コード
   8 N Mar 21 ********* ( 0) 「******」登録確認メール
 
-*-Mutt: postmaster [Msgs:8 3.0M]—(date/date)————————-(all)—

詳細はマニュアルに譲りますが、大まかな使い方は
– mutt -f /path/to/Mailbox でメールボックスを開き
– エンターで、指定メールを開く
– スペースでページを送る(最後尾の場合次のメールに切替え)
– メール表示中 q でメール一覧に戻る
– d で指定メールを削除
– メール一覧表示中 q で mutt 終了
です。ちなみに一覧で
– N とフラグが立っているのが新規メール
– O とフラグが立っているのは未読の古いメール
– D とフラグが立っているのは d キーで削除チェックをいれたメール(この状態でメーラを終了するとその時に削除されます)
– フラグの無いものは、既読メール
です。