「Squirrelmail」カテゴリーアーカイブ

Squirrelmailとphp5.4

FreeBSDのportsにSquirrelmailが入るようになってからずっとports版のSquirrelmailを使っていました。でも、php5.4の環境でインストールしようとするとportsが

/usr/ports/mail/squirrelmail# make configure
===>  squirrelmail-1.4.22_3 cannot be installed: doesn’t work with lang/php5 port (doesn’t support PHP 5.4).
*** [configure] Error code 1

Stop in /usr/ports/mail/squirrelmail.

と怒ってインストールさせてくれません。仕方が無いのphp 5.3 (php53-*)のportsを入れてやり過ごしてきました。 続きを読む Squirrelmailとphp5.4

FreeBSD (Squirrelmail 1.4.19)

portsの毎日のレポートでアップしろと勧めてくれるのをようやくアップしました。
作業的には前回を同じ。
portupgrade して、このページ日本語パッチを落としてきてサーバー上で解凍。できた squirrelmail-1.4.19-ja-20090522-patch を /usr/local/www/squirrelmail に置いて同じ場所から

# patch -p1 < squirrelmail-1.4.19-ja-20090522-patch [/code] で完了。

FreeBSD (Squirrelmail 1.4.17)

前回から大分たちますが、

Affected package: squirrelmail-1.4.13
Type of problem: squirrelmail — Cross site scripting vulnerability.
Reference: <http://www.FreeBSD.org/ports/portaudit/d1ce8a4f-c235-11dd-8cbc-00163e000016.html>

という警告が出てたのを放っておいたのを遅ればせながらアップデートしました。いつものとおりportupgradeした後、日本語向けのパッチを当てる。今回はsquirrelmail-1.4.17-ja-20081204-patch.gz

ヘッダの加工はclass/deliver/Deliver.class.phpを

# diff Deliver.class.php Deliver.class.php.original
579,580c579
<             //$header[] = “Received: from $received_from” . $rn;
<             $header[] = “Received: from ほげほげ(IPアドレス)” . $rn;

>             $header[] = “Received: from $received_from” . $rn;

の一箇所でOK。

FreeBSD (Squirrelmail 1.4.13)

毎日のportsのcvsupでpkg_versionが、

squirrelmail-1.4.11 < needs updating (port has 1.4.13)

と知らせてくれました。マイナーバージョンが11から13に一気に上がってます。
いつものようにportupgradeして、日本語パッチをここから落としてきて当てて、と作業をしようとしてる途中で

SECURITY:
SquirrelMail 1.4.12 Package Compromise
SquirrelMail 1.4.13 Released 非常に危険な脆弱性修正
SquirrelMail 1.4.11と1.4.12に何があったのか

を知りました。1.4.11と1.4.12のコードが何者かに改ざんされていたので急遽1.4.13のリリースとなったらしいです。
問題のコードが私のサーバーのSquirrelmailには入っていなかったのでセーフでしたが、ともあれアップデートは済ませておきました。

FreeBSD (Squirrelmail: ヘッダの細工)

Squirrelmailでヘッダの発信元を隠すように細工。
変更箇所は一箇所。同じサーバーのプロキシ経由での発信に見える、はず。

# cd /usr/local/www/squirrelmail/class/deliver
# diff Deliver.class.php.org Deliver.class.php
400,405c400,406
&lt;              if (isset($encode_header_key) &amp;&amp; trim($encode_header_key)!='') {
&lt;             // use encrypted form of remote address
&lt;             $message_id.= OneTimePadEncrypt($this-&gt;ip2hex($REMOTE_ADDR),base64_encode($encode_header_key));
&lt;         } else {
&lt;             $message_id.= $REMOTE_ADDR;
&lt;         }
---
&gt; //        if (isset($encode_header_key) &amp;&amp; trim($encode_header_key)!='') {
&gt; //            // use encrypted form of remote address
&gt; //            $message_id.= OneTimePadEncrypt($this-&gt;ip2hex($REMOTE_ADDR),base64_encode($encode_header_key));
&gt; //        } else {
&gt; //            $message_id.= $REMOTE_ADDR;
&gt; //        }
&gt;         $message_id.= 'ほげほげ(IPアドレス)';
418a420
&gt;         $received_from = "ほげほげ(IPアドレス)";

これで発信したメールヘッダはこんな感じになります。

Received: from www.ほげほげドメイン (localhost.ほげほげドメイン [127.0.0.1])
by ほげほげドメイン (Postfix)
with ESMTP id 50F9B5066FF for &lt; 宛先メールアドレス&gt;;
Thu, 21 Dec 2006 13:47:53 +0900 (JST)
Received: from ほげほげ(IPアドレス) (SquirrelMail authenticated user hogehoge)
by ほげほげドメイン
with HTTP;
Thu, 21 Dec 2006 13:47:53 +0900 (JST)
Message-ID: &amp;lt;2933.ほげほげ(IPアドレス).1166676473.squirrel@www.ほげほげドメイン&gt;

FreeBSD (Squirrelmail)

/usr/ports/mail/squirrelmail

以前は/user/ports/japanese/に日本語版が置いてあったが今はここのみに置いてあるみたい。

日本語版本家では1.4.5で止まっているけど、portsのは1.4.8。とりあえずportsで入れてみる。

# cd /usr/ports/mail/squirrelmail
# portinstall

その後、/usr/local/www/squirrelmailに降りて、

# cd /usr/local/www/squirrelmail
# ./configure

で各種設定を行う。

日本語を使うなら、 メニュー10番目のLanguageの所を

Language preferences
1.  Default Language       : ja_JP
2.  Default Charset        : iso-2022-jp
3.  Enable lossy encoding  : false

でOK。あと、メニュー2番目のServer SettingsでIMAPサーバーを選択すれば使えるようになります。ウチはuw IMAPなのでこんな感じ。

IMAP Settings
--------------
4.  IMAP Server            : localhost
5.  IMAP Port              : 143
6.  Authentication type    : cram-md5
7.  Secure IMAP (TLS)      : false
8.  Server software        : uw
9.  Delimiter              : detect

あとは、適当に好みで。

apacheの設定は、SSLで使いたかったのでIncludesに置いたhttpd-ssl.confに下記を追記。

<code>Alias /webmail "/usr/local/www/squirrelmail"</code>
AllowOverride All
Options FollowSymLinks ExecCGI Includes
Allow from All

これで https://wwwほげほげ/webmail で使えるようになる。
ところが、 返信とかすると下記のようなウォーニングが。

Warning: preg_split() expects parameter 4 to be long, string given in /usr/local/www/squirrelmail/functions/imap_messages.php on line 808Warning: Invalid argument supplied for foreach() in/usr/local/www/squirrelmail/functions/mime.php on line 52

ぐぐってみたらパッチ発見。

http://www.hmailserver.com/forum/viewtopic….

http://sourceforge.net/tracker/index.php?func=detail&aid=1543573…..

# diff imap_messages.php.org imap_
messages.php
808c808
&lt; $flags = preg_split('/ /', $regs[1],-1,'PREG_SPLIT_NI_EMPTY');
---
&gt;                 $flags = preg_split('/ /', $regs[1],-1,PREG_SPLIT_NO_EMPTY);

これで解決。