No:112 Time[2008-04-15 03:53:58]

最近送信メールサーバーに苦労する。
というのも、クライアントにメールがほしいと言われると従来はメールサーバーは受信だけ作って送信サーバーはプロバイダ支給の物を使っていたが、プロバイダによっては25番ポートからの発信自体を他のプロバイダに対して行わせないようになっているのである。図を見てわかるようにそもそも、メールサーバー間のやり取りに使われている25番ポートとメールサーバーユーザー間のやり取りに使われているポートが同じであったことが不幸の始まりで、性善説を元に作られたインターネットの歴史のような弱点でした、しかし、これでは不正利用者に簡単に勝手に利用されてしまうのです。
かといって25番ポートにパスワードを授けてしまうとサーバー間の通信が出来なくなります。そこで新たにユーザーとメールサーバー間は587番を使いそれにパスワードをつけて送信するときも利用者を制限するようになりました。又この仕組みと同時に多くのプロバイダがOutbound Port 25 Blockingを施し、他のプロバイダへ25番ポートを使ってメール送信できなくしました。本来メールサーバー側で25番ポートを開放しなければ
Outbound Port 25 Blockingは行わなくてもよかったのですが、中には安いプロバイダの回線を利用して一時的にメールサーバーをたて、大量のメール配信を行う者が出てきました。メールサーバー間は25番ポートを利用していますから、本来WEBの閲覧等を目的に安く提供しているプロバイダはたまったものでもなく又送られた側からの大量クレームもプロバイダに届くことになります。しかも送信のみが目的なので一時的にセッションを貼ることができれば、メールの受信はできないほうがかえって好都合なわけです。
そうした不正利用者は安いプロバイダをころころ変えて利用するのでいくら退会処理をしても一向に減ることがないため、そもそも一般ユーザーが利用することのないサーバー間のポート25を制限したのがOutbound Port 25 Blockingで、外に出ていく25番ポートをプロバイダ側でブロックするのですが、困ったことに外部のコンテンツプロバイダに独自ドメイン等の為にメールをもっているユーザーはこの処置が行われたとたん、メールの送信ができなくなります。そして利用者は独自ドメインのプロバイダにクレームをいうわけですが、この場合勝手にサービスを変えたわけですから、接続プロバイダ側が返信アドレスを独自ドメインとした場合でも送信できるメールサーバーを用意するべきなのですが、自社のメールアドレス以外だと送信させないサーバーしか用意していない所もあるようです。となると、接続プロバイダからは、コンテンツプロバイダに言ってくださいといいますね。コンテンツプロバイダで従来からのpop before smtpしか用意していない会社の場合はサービスはちゃんとしていますとは大概いいません。競争が厳しいこの業界では新たにザミッションポートに対応したサービスを用意するしかないわけですね。
そこで何を使って実現するかが問題になってきます。
私はqmailを使っています。
これはもうふるーーーいソフトですから、中にはそろそろ捨ててしまいなさいという人もいますが、今のところその安定性は尊敬に値すると思いますし、
今更めんどくさいというのも理由の一つです。
でどのように実現されるかですがipfilterとパスワード等の認証をqmailに追加すればできます。
ipfilterはnat機能を有しているので587番に届くパケットを25番に転送します。



以下のパッチを用意する。ただ、最近はみつからないですね。
qmail-date-localtime.patch
ということで困っていたらportsに組み込まれていました。



まずqmailを入れます
cd /usr/ports/mail/qmail-tls
make patch
make
make install clean

以下のようなのでたらチェックする。
何度かやると出てこなくなるけどworkを見る限り必要なのは入っていればok

x Options for qmail-tls 1.03.20021228_1 x
x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x
x x[X] SMTP_AUTH_PATCH Provide SMTP Authentication x x
x x[ ] QMAILQUEUE_PATCH run a QMAILQUEUE program x x
x x[ ] BIG_TODO_PATCH enable big_todo qmail patch x x
x x[ ] BIG_CONCURRENCY_PATCH use a concurrency greater than 240 x x
x x[ ] OUTGOINGIP_PATCH set the IP address to send messages x x
x x[X] LOCALTIME_PATCH emit dates in the local timezone x x
x x[ ] QMTPC_PATCH send email using qmtp protocol x x
x x[ ] MAILDIRQUOTA_PATCH Maildir++ support x x
x x[ ] BLOCKEXEC_PATCH block many windows viruses/worms x x
x x[ ] DISCBOUNCES_PATCH discard double-bounces x x
x x[ ] SPF_PATCH Implement SPF checker x x
x x[ ] EXTTODO_PATCH extern high-perform. todo processing x x
x x[ ] TLS_DEBUG enable additional debug information x x
x x[ ] QEXTRA enable QUEUE_EXTRA copy feature x x
x x[X] RCDLINK create rc.d/qmail.sh x x
tqmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj


にチェックを入れてインストール








make certificate

Syntax error: end of file unexpected (expecting "fi")
*** Error code 2

う、エラーだ。うまくできてない。
ll /var/qmail/control/servercert.pem
ができてればいいわけだが
しゃーない手動で
/usr/bin/openssl req -new -x509 -nodes -out work/servercert.pem -days 3660 -keyout work/servercert.pem

でここでももし下記のようなエラーがでる人は

13598:error:02001002:system library:fopen:No such file or directory:/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/bio/bss_file.c:352:fopen('work/servercert.pem','w')
13598:error:20074002:BIO routines:FILE_CTRL:system lib:/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/bio/bss_file.c:354:

vi /etc/ssl/openssl.cnf
unique_subject = no
をコメントアウトしてから

Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Sinjyuku
Organization Name (eg, company) [Internet Widgits Pty Ltd]:seo-diary.com
Organizational Unit Name (eg, section) []:suzuki
Common Name (eg, YOUR name) []:mail.seo-diary.com
Email Address []:

cp work/servercert.pem /var/qmail/control/servercert.pem
chmod 0640 /var/qmail/control/servercert.pem
chown qmaild:qmail /var/qmail/control/servercert.pem




vi /var/qmail/control/locals
seo-diary.com
vi /var/qmail/control/rcpthosts
seo-diary.com

何故かリンクされてるけどインストされてなかったので
ll /usr/local/etc/rc.d/
cp /var/qmail/boot/maildir /var/qmail/rc
ちゃんとインストされたかみてみる。
vi /var/qmail/rc
これは、便利にしたらしいけど、これで再起動すると止まるな。
まあ、ためしに
/var/qmail/rc start
動いているのか確認する。
ps -ax | more
おお、maildir形式で動いてるらしい。

55804 p0 I 0:00.01 qmail-send
55805 p0 I 0:00.00 splogger qmail
55806 p0 I 0:00.00 qmail-lspawn ./Maildir/
55807 p0 I 0:00.00 qmail-rspawn
55808 p0 I 0:00.00 qmail-clean

/var/qmail/rc stop

さて、このまま試しにサーバーを再起動すると、Starting local daemons:
で止まってかえってこなくなることになる。
まあ、よくあることだけど、起動と終了をオプションでできるようにしたら
サーバー自体の起動に安易につかっている部分と整合性がとれてなくていつまでもオプション要求まってるから
起動しなくなるという罠。

ll /usr/local/etc/rc.d/
rm /usr/local/etc/rc.d/qmail.sh


portsでインストするといらないのかもしれないけど、リンクされてないようならsendmailからqmailへの変更
これをしないとcgiからメールとかできない。

chmod 0 /usr/sbin/sendmail
mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail



pop側を入れる
checkpassword のインストール
cd /usr/ports/security/checkpassword
make install clean





smtpの認証を入れる

mkdir /usr/local/src/cmd5checkpw
cd /usr/local/src/cmd5checkpw
wget http://members.elysium.pl/brush/cmd5checkpw/dist/cmd5checkpw-0.22.tar.gz
tar xvfz cmd5checkpw-0.22.tar.gz
cd cmd5checkpw-0.22/
make
make install
すると
cp cmd5checkpw /bin/ ; cp cmd5checkpw.8 /usr/man/man8/
cp: directory /usr/man/man8 does not exist
ううう、これも古いのね、マニュアルをインストールしたあと他のものインストールしてたらいかんのでとりあえず、
フォルダを使ってごまかし、再度インストール
mkdir /usr/man
mkdir /usr/man/man8
make install
で本来の場所に
cp cmd5checkpw.8 /usr/share/man/man8/


実際のファイルは
# vi /etc/poppasswd
ユーザー1:パスワード
ユーザー2:パスワード
.....
みたく書いていきます。popで使うわけではないんだけど、本来popを/etc/passwdとわけるためのものらしい。


ファイルのパーミッションを修正します
chmod 400 /etc/poppasswd
chmod a+s /bin/cmd5checkpw



tcp serverを入れる
cd /usr/ports/sysutils/ucspi-tcp
make install clean


制御ファイルを作る
vi /etc/tcp.smtp
xxx.xxx.xxx.xxx:allow,RELAYCLIENT=""
127.0.0.:allow,RELAYCLIENT=""
=.seo-diary.com:allow,RELAYCLIENT=""
:allow
ハッシュ化する
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp




次にrc.localでsmtpとpopが自動的に立ち上がるように設定。まあ、この時点でqmailて色々なものを使ってはじめて動くとわかる。
vi /etc/rc.local
/var/qmail/rc start &
/usr/local/bin/tcpserver -HR -u 82 -g 81 -x /etc/tcp.smtp.cdb 0 smtp /var/qmail/bin/qmail-smtpd mail.seo-diary.com /bin/cmd5checkpw /usr/bin/true 2>&1 | var/qmail/bin/splogger smtpsd &
/usr/local/bin/tcpserver -HR 0 110 /var/qmail/bin/qmail-popup mail.seo-diary.com /usr/local/bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir &


まあ、qmailでの送受信が何十秒もまつといやなので、tcpserverでホストの確認はしていません
この変でqmailは立ち上がるはずなので再起動。してみる
reboot
qmail自信はうまくうごくようになったが、qmail単体はいくらセキュリティ高くても、周りにいろいろつけないといかんから、ややこしくなって廃れていくのかなと思ってみる。でもqmailいいですよ。






次にipfilterを使うのでカーネルに下記を追加
cd /usr/src/sys/i386/conf
cp GENERIC seo-DIARY
vi seo-DIARY

options IPFILTER
options IPFILTER_LOG
options IPFILTER_DEFAULT_BLOCK

config seo-DIARY
cd ../compile/seo-DIARY
make cleandepend; make depend
make
make install

次にrc.confに下記をいれます。

vi /etc/rc.conf
ipfilter_enable="YES"
ipfilter_program="/sbin/ipf"
ipfilter_rules="/etc/ipf.rules"
ipmon_enable="YES"
ipmon_flags="-D /var/log/ipflog"
ipfilter_flags=""
ipnat_enable="YES"
ipnat_program="/sbin/ipnat"
ipnat_rules="/etc/ipnat.rules"
ipnat_flags=""


次に/etc/ipf.rulesを編集しますが、せっかくなので
http://www.seo-diary.com/p_111/index.html
を参考にしてセキュリティも強化することをお勧めしますが、うまくいかなければ
pass in all
pass out all
で何でも通すということになります。

次に/etc/ipnat.rulesにサブミッションポート587を25ポートにリダイレクトしてあげます。
vi /etc/ipnat.rules

rdr rl0 xxx.xxx.xxx.xxx/32 port 587 -> xxx.xxx.xxx.xxx port 25 tcp

さて、いよいよ、再起動してあとは、お祈りします。


これでtlsで認証しつつ、パスワード付smtpをqmailで構築しつつサブミッションポート587にも対応できました。
自分のメーラーソフトで確認してみてください。
ついでにnmapで変なポート開放してないかも確認して完了です。
後は、しいていえばvpopmailでも使ってセキュアなpopをすればいいのですが~
それをしてしまうと、じゃあqmailは何をしているのさということになるような。で、素直にパッチがでることを願いつつ。
まあそれにそのうち、アプリケーション層でがんばらなくても、セキュアになる時代が~ip4になれると面倒ですよね、使い始めたシステムってなかなか
変わらないものです。

 

サウンドハウス中国からの不正アクセス10万人の顧客データ流出という内容がNHKでやっていました。
どうやらSQLインジェクションを使ったデータ漏洩が原因のようです。
最近は、この手のアタックが多いようです。
私は中国うんぬんという気はないのですが、国境を越えた犯罪というのは考えものですね。というのも実はHP作成の業者にも海外で安く作って日本で販売している業者が多いのです。作った本人であれば、SQLのどこに弱点があるか等はすべて知ってて当たり前ですからね。しかもその請け負った仕事の会社のサーバーが海外であり、犯人が住んでいる国では何の法律的制裁もうけないとしたら、お金にこまった開発者がやってもおかしくはないですね。まあ、SQLは基本的にmysql_real_escape_strin等の関数を通すことで抑制できるんですが、わざとでなくても、案外見逃すことはあります。
ただ、方法は色々あるんですが、どんなテーブルを使っているか等はやはり仕様書が
ないとランダムに辞書を元にアタックをかけなければならないので、特にクレジット等を扱うHPを作るときは製作会社には注意したいし、できれば法律の届かない海外には出したくないものですね。最近、seo関係以外のことをよく書いているようですが、実は洵のネタを書くことは、seoには結構有効なのですよ。
海外でのテストも兼ねて海外向けに書くなんてのもseo的にどうなるか興味をひきますね。

 

seoダイアリー で検索してみてください。
yahoo、googleともに一ページ目には表示されますが、おや?
と思った人も多いのではないでしょうか?
現時点でトップページがトップに来ていない。
もともと、検索にのるのは多くて2ページ分なのですが、基本的に、内容と
外部リンクでトップがトップにきます。
トップページがトップに来ない場合の多くはトップに画像などを多様していて内容が
なく他のページが優先された場合と外部リンクがトップ以外にされている
という2点が大きく関係します。
うちの場合は両方ですかね。。。
そのうちにトップになると思いますが。。。

 

最近ちょいと、キンダースタート社のことについて書いたのですが、やけにアクセスが多い。
みると検索エンジンの上位に表示されている。。。。みなさんそんなに気になっていたんですね。
それはすなわち、何をしたらgoogle八部になるか?ということにが気になっているのだと思います。
(しかしテレビの力は今だ大きいんですね~)
多分こういったことを調べている人たちは大概HP関係者でそれで食べている方たちだと思うのですが、googleの力が強大になればなるほど、われわれはおびえないといけません。
なぜなら、googleから消されてしまえば、一瞬先は闇、食べていくこともできなくなってしまうからです。
そして何故、googleがこれほどまでに世の中に受け入れられたか?
もちろん、検索精度が当時あったものと比べてとんでもなくよかったから、というのはいうまでもありません。
その一端は我々seoやHP作成者が担ったといっても言い過ぎではないでしょう。
それは、yahooや他の検索エンジンの順位づけが全く公開されていなく、どうやったらいいランキングを得られるかに頭を悩ませ始めたころ、googleにはページランキングという、いかにもわかりやすいシステムが提供されこぞって、他の検索エンジン相手ではなく、googleの順位をあげる方法!などと皆がこぞったからです。
そして、ページランキングを上げるのはたくさんのページリンクの高いサイトからリンクをもらうことだよ。
って皆が宣伝していくうちに、(私も当時随分と宣伝しました。)[検索エンジンといえばgoogle]のようなイメージが定着しました。日本においては、yahooが一時期googleを採用していたことも大きな宣伝になりましたね。
したがって、ページランクはことgoogleのビジネスモデルにおいては大きな役割をはたしたと私は思いますし、現在のページランキングが必ずしも順位の一要素にすぎなくなったとしても、わかりやすいランキングで高くなればニンマリとしてしまう人たちがいる限り、重要なものであると私は思います。
この辺の私たちとgoogleの関係ってマイクロソフトが不正コピーユーザーの使用で有名になって今の地位を築いたのとなんか似てますよね。
今yahooがマイクロソフトに買収うんぬんと騒いでいます。中には検索エンジンgoogleだけでいいから早く他はなくなってほしいなんて人もいますが、私はそれは大変危険なことだと思います。せめて2つ今のようにmsnも入れて3つくくらいが丁度いいんでないでしょうかね?
一つの企業が強大な力を持ちすぎればこんな危険なことはありません。
例えば、googleは検索以外にもたくさんのサービスを始めています、もしあなたのHPと同じジャンルのことをgoogle自信がやってしまったら到底かてるわけがありませんよね。。でも世の中は集約化されつつあります。怖いことです。でもgoogleもやりすぎは気をつけたほうがいいかもしれませんよね、遠い将来google分割!なんてことになるかもしれませんもの。あまりに巨大になりすぎるとそういう意見がでるのがアメリカのいいところ?なんですかね。消費者優先。。。

で、google八部されないようにするにはどうすればいいか?
どういうHPを作ることに心がけるか?という点を書いておきたいと思います。
まず、内容です。内容がなく他のサイトへのリンクばかりのページはやめましょう。
ただし、広告等でjavascriptから読み込まれる、グーグルアドセンスのようなものは外部リンクと考えなくていいと私は思います。
何故なら大概javascriptはクローラーは読んでいかないと考えられるからです。
ただし!削除専用ボットというのが多分あると予想します。
私ならつくります。詳しくはどういったものか書きませんが、HPであやしいことをしていると、それにポイントをつけて一定以上を超えたら八部というものを作ると考えます。これはとある理由から通常のボットとは別口できます。
ある意味ステルスボットですね。
したがって、javascriptを悪用したseoは行わないこと。そもそもソースが公開されているのがjavascriptですから。
又、HPをみてもらいたいからjavascriptで相互リンクというのは同様の理由で意味がないと思います。
もちろん、色々なキーワードを意味もなく並べることもやめましょう。
それらをバックの色と同じにして一般ユーザーから見えなくするのももってのほかです。
まあ、この変のことはここを見にくる方なら大概わかっていると思います、かいてるくらいですから、間違いなくすぐに八部されます。そして、特にこれから重要になると思われる事柄を一つ。文章を全部リンクタグで囲まない!
私の経験からいって、リンクタグの中にある文章は普通のノーマルの文章よりも明らかに重要度がおちます。
まあ、いっけんリンク重視のgoogleですが、脱リンクになりつつあると私は認識しています。
1ペーシあたりの外部リンクはなるべく少なく。内部リンクはトップページへは最低一個
そして全ページをリンクでつなげること。
そして、外部リンクしてもらえないから安易にブログにする。。。というのも一つなのかもしれませんが。。。
ブログは一般のHPと比べて判定がわけらけるようになったと推測します。
外部リンクの売買は禁止されましたので初めてHPをつくるとなると苦労すると思いますが、ページの枚数をある程度つくることも重要になります。
ことこまめに追加や修正をしていく。
やたらと頻繁にメンテをするサーバーを使わない!
あなたが寝ている時間などで人が見ていない時間でもクローラーはむしろやってきます。落ちていたら。。。
遅いサーバーは使わない!、クローラーはそんなに待ってくれません。。
技術的な話になりますが、403、404エラーをださない。
ファイルがなくなったと判断すればクローラーは巡回しなくなります。
304を出さない!
なんのこと?と思う人もいるかもしれませんがこれ結構難しいです。
すなわち更新されていないとサーバー側が前回と更新されてませんよ~とクローラーにいいます。
クローラーは更新されていないなら見なくていいやとなって収集されません。
すなわち、絶えず更新されているサイトなら優秀なページじゃん。
という一要素になったりしますね。
結構重要なことですよ。ほうりっぱなしのページより絶えず更新されているページのほうが優秀と判断されます。
とまあ、すこしサービスで書きすぎました。。。。
あまり、書いてしまうとライバルがこわいし。。。(このくらい常識かもしれませんが)でも内容かかないと見てもらえないし。。。こういったサイトのジレンマですね。
googleも仕様をおおっぴらに公開してこういうことはダメ!こういうことはいいよ!
といいたいんでしょうけど、そうすると裏をつく人がでてくるので言えない。。これもジレンマですね。。。
まあ、根気欲HTMLを人々が見たい内容に書いていくと上位に表示されるようになっています。。
それは、このサイトで実証済みです。

 

No:110 Time[2008-02-05 15:22:28]
何かと忙しくて更新ができませんでしたが、最近仕事でGDからImageMagickへの移行が必要になりました。
そもそもGDやImageMagickというのは、画像をサーバー上で表示するためのものです、特に多く使うのはサムネイルなど小さい画像を作るために使用することが多いのです。

今回GDからImageMagickに移行するのは素直にGDが画像リサイズする時汚いからです。
私も仕事でクライアントに画像が汚いと言われるまで意識もしていませんでしたが、
確かに汚い!

仕事で色々しているとめんどくさいことを色々言われるのですが、それは一般の貴重な意見で実はありがたいことも多いですね。

比較してみての結果です。

イメージマジック画像

確かに綺麗ですが重い

GDの画像

若干汚いが処理は高速

といった感じで一つだけ見ると劣化頻度はわずかですが、ここが重要!
特に物を売りたいサイトの場合は、画質のわずかな違いで気にいったり気に入らなかったり、サイトの評価まで決まってしまいます。

seoも重要ですが、クライアントのサイトを変更してみてわかったことですが、画像の解像度はとても重要でしたが、サーバー自体はかなり重くなります。
ということで、綺麗な画像を使うにはそれなりの仕組みが必要になってきます。
特にいくら綺麗でも処理時間が長く表示が遅いとseoでは知名的です。
そもそも、大手検索エンジンのクローラーが瞬時に表示されないようなサイトをクロールしてくれるでしょうか?
クローラーが収集してくれる時間は非常にわずかです、感覚でいうと瞬時に表示されなければ収集されないといってもいいすぎではないと思います。
まあ実際の収集タイムは数秒でしょうが、そのことを考えると現状イメージマジックを使うにはそれなりの仕組みが必要になります。
まあ、画像はソースとは別プロセスで収集されるわけですから関係ないと考える場合もあるかもしれませんが少なくとも、KeepAliveはOFFにしないといけないわけです。
KeepAliveとは、細かい画像をアイコンなども含めてあると画像などを別々のセッションで読み込むと大量のセッションをうんで効率が悪いことから通常はONされています。
ですが、画像を加工するなどすると処理に時間がかかるため、全情報をダウンしないと表示しないこの仕組みではかなり遅くなります。そもそもseo的にはHTMLソースコードのみ読み込めばいいわけですから、セッションは別口にしたほうがいいわけですね。

とおもったのですが、後日突然サーバーが重くなったので
下記を追加しましす。

http://www.seo-diary.com/p_137/index.html