本日は有給消化のためと、たまには骨休めも必要ということで、休んでゆっくりしています。(でもいろいろ作業しているのだけど)
ところで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というやつ。
これでメール参照も快適だ。