本日は有給消化のためと、たまには骨休めも必要ということで、休んでゆっくりしています。(でもいろいろ作業しているのだけど)


ところでFreeBSDではメーラにmnewsを利用しているのだが、ちょっといろいろいじってインストールしたのでメモ書き。


まずインストールについてだが、UNICODEが利用したかったので、mnews-PL6に対して以下のパッチを適用してソースからビルドした。


http://www.doga.co.jp/~taka2/mnews/


ビルド方法やインストール方法についてはいくつかの場所で説明してあり、まあそのままやっただけ。

FreeBSDでのmnewsのビルドについては以下を参照。そのままではうまくいかずMakefileを修正する必要がある点に注意。


http://www.cory.jp/98/mnews.html


さらにそのままではいくつかの不具合があったので、以下の修正を入れた。


まず、そのままだとメール送信時にサイズ上限があるので、リミットを外す。
--- src/mailsend.h~     2000-08-18 08:37:08.000000000 +0900
+++ src/mailsend.h      2011-03-29 22:38:24.000000000 +0900
@@ -21,7 +21,7 @@
 #endif /* (!MSDOS || USE_LONG_FNAME) */
 #define        ALIAS_PARAM1    "alias"         /* エイリアスパラメータ(1)      */
 #define        ALIAS_PARAM2    "group"         /* エイリアスパラメータ(2)      */
-#define        MAX_SEND_SIZE   (48L * 1024L)
+/* #define     MAX_SEND_SIZE   (48L * 1024L) */

 #define        FORWARD_START_MESSAGE   "------- Forwarded Message\n"
 #define        FORWARD_END_MESSAGE     "\n------- End of Forwarded Message"
--- src/newspost.h~     2000-03-26 01:27:29.000000000 +0900
+++ src/newspost.h      2011-03-29 22:38:29.000000000 +0900
@@ -15,7 +15,7 @@
  */

 #define        POSTER          "poster"
-#define        MAX_POST_SIZE   (60L * 1024L)
+/* #define     MAX_POST_SIZE   (60L * 1024L) */

 #define        PF_FROM_MASK    0x0001
 #define        PF_SUBJ_MASK    0x0002

さらに、メールに添付された画像等を見る際にファイル名が正常に表示されず、セーブしようとしてもやはりファイル名が空欄になってしまう問題の修正と、IMAP4対応パッチを適用するとmnewsのメール選択画面などでカーソルキーがなぜかうまく利用できなくなってしまうので、その修正。select()で待ってしまうのがまずいらしいので削除する。

--- src/mnews.c~        2011-03-29 22:36:45.000000000 +0900
+++ src/mnews.c 2011-04-01 00:38:15.000000000 +0900
@@ -2962,20 +2962,24 @@
                if (mime_mtype == M_MTYPE_MULTI) {      /* multipart    */
                  if (!mime_get_param(ptr3, MIME_BOUNDARY, boundary)) {
                    fclose(fp1);
                    fclose(fp2);
                    mime_part_menu(file1, boundary, mime_news_group,
                                   mime_stype);
                    return(1);
                  }
                } else if (mime_mtype == M_MTYPE_APP) { /* application  */
                  mime_get_param(ptr3, MIME_NAME, file_name);
+               } else if ((mime_mtype == M_MTYPE_AUDIO) ||
+                          (mime_mtype == M_MTYPE_IMAGE) ||
+                          (mime_mtype == M_MTYPE_VIDEO)) {
+                 mime_get_param(ptr3, MIME_NAME, file_name);
 #ifdef notdef
                } else if ((mime_mtype == M_MTYPE_MSG) &&
                           (mime_stype == M_STYPE_PART)) {
                                                /* message/partial      */
                  mime_mtype = M_MTYPE_UNKNOWN;
                  mime_stype = M_STYPE_UNKNOWN;
                  while (fgets(buff1, sizeof(buff1) - 1, fp1)) {
                    if ((!buff1[0]) || (buff1[0] == '\n')) {
                      break;
                    }
@@ -3960,21 +3964,25 @@
       mouse_row = key - ' ';
       mouse = 0;
       break;
     }
     key = '[';
   }
 #endif /* MOUSE */
   switch (escape) {
   case 0:
 #ifndef        DONT_HAVE_SELECT
+#if 0
     if (key == 0x1b && term_select()) {        /* ESC                  */
+#else
+    if (key == 0x1b) { /* ESC                  */
+#endif
 #else  /* !DONT_HAVE_SELECT */
     if (key == 0x1b) { /* ESC                  */
 #endif /* !DONT_HAVE_SELECT */
       escape = 1;
       key = 0;
     }
     break;
   case 1:
     if ((key == '[') || (key == 'O')) {
       key = '[';       /* O はキーバインドで使うので [ に変換 */

さらに、MSPLが無効でビルドした際に.mnews_setupでpop3_modeをoffにしたときに強制的にMSPL利用になってしまい起動が遅い問題の修正。

--- pop3lib/pop3lib.c~  2002-01-09 15:07:09.000000000 +0900
+++ pop3lib/pop3lib.c   2011-04-01 00:35:11.000000000 +0900
@@ -133,26 +133,30 @@
   static int           first = 1;
   char                 spool_dir[PATH_BUFF];
   struct stat          stat_buff;
 #endif /* MSPL */
   char                 *ptr;
   POP3_ERR_CODE                status;

   switch (pop3_connect_mode) {
   case 0:                                      /* MSPL→POP3 接続      */
 #ifndef        MSPL
-    pop3_connect_mode = 1;
+    pop3_connect_mode = 2;
 #endif /* MSPL */
     break;
   case 1:                                      /* POP3→MSPL 接続      */
 #ifndef        POP3
+#ifndef        MSPL
+    pop3_connect_mode = 2;
+#else
     pop3_connect_mode = 0;
+#endif /* MSPL */
 #endif /* POP3 */
     break;
   default:
     break;
   }
   status = POP3_ERR_COMM;
   switch (pop3_connect_mode) {
   case 0:                                              /* MSPL 接続    */
 #ifdef MSPL
     if (first) {

あと、上記サイトではmmfilterというファイル添付用のフィルタを公開しているのだが、ソースを見たところ、バッファサイズが固定なので添付できるファイルのサイズに上限があるように思える。


まあサイズ拡張すればいい話ではあるのだが、面倒なのでperlで同等のフィルタを書いてみた。せっかくなので以下で公開する。「mnewsでメール送信時にファイルを添付させるスクリプト」ってやつね。mimefilter.plというやつ。


http://kozos.jp/tools/


これでメール参照も快適だ。