FreeBSD QandA 921

FreeBSD QandA

Q. mnews の MH モードで、pop サーバからメールを取り込むことができませ
   ん。どうすればよいのでしょうか。

A. POP3 サーバ、あるいは APOP サーバからメールを取得しようとしていま
   せんか?  その場合、「ユーザの入力が不要な inc」が実行できるように 
   .netrc などに設定を加える必要があります。具体的には次のようにします。 

   1.  mnews の設定ファイル ${HOME}/.mnews_setup ファイルに以下を追加します:

       mh_mode: on
       msgchk_rule: 2

   2.  POP3 サーバからメールを取得する場合は、MH の設定ファイル
   ${HOME}/.mh_profile に以下を追加します:

       inc: -norpop -noapop -host pop-hostname -user pop-account
       msgchk: -norpop -noapop -host pop-hostname -user pop-account

   APOP サーバからなら、次のようにします:

       inc: -apop -host pop-hostname -user pop-account
       msgchk: -apop -host pop-hostname -user pop-account

   ここで pop-hostname には POP3/APOP サーバ名、pop-account には POP3/APOP
   アカウント名を記述します。

   3.  MH の inc, msgchk コマンドを問い合わせなしで実行するため、
   ${HOME}/.netrc ファイルを作成し、以下の記述を加えます。

       machine	pop-hostname
       login	pop-account
       password	pop-password

   pop-hostname には POP3/APOP サーバ名、pop-account には POP3/APOP アカ
   ウント名、pop-password には POP3/APOP パスワードを記述します。

   上記のように、$HOME/.netrc ファイルには生のパスワードが記述さ
   れるため、その取り扱いには細心の注意を払って下さい。他のユーザーに読ま
   れないように、ファイルのモードは 600 にしておきます。

       % chmod 600 $HOME/.netrc

   以上の設定でメールを取り込んで読むことができるようになるでしょう。

   なお、mnews 1.21 は環境変数 MH による設定ファイル (.mh_profile) 切り替え
   には対応していません。対応させるには、たとえばこんな patch を適用して
   mnews を作り直す必要があります:

   ----patch start----

   --- src/mh.c.dist	Fri Sep  4 11:28:45 1998
   +++ src/mh.c	Fri Sep  4 12:07:05 1998
   @@ -416,7 +416,36 @@
      if (!mh_mode) {
        return(0);
      }
   -  sprintf(init_file, "%s%c%s", home_dir, SLASH_CHAR, MH_INIT_FILE);
   +  {
   +    char *mymh;
   +
   +    if ((mymh = getenv("MH")) != NULL) {
   +      /* set alternate MH profile path */
   +      if (*mymh == SLASH_CHAR) {		/* absolute path */
   +	if (PATH_BUFF < (strlen(mymh) + 1)) {
   +	  fprintf(stderr, "init_file buffer is not enough: current = %d\n", PATH_BUFF);
   +	  exit(1);
   +	}
   +        sprintf(init_file, "%s", mymh);
   +      } else {
   +        char *p;
   +	
   +	if ((p = getcwd(NULL, PATH_BUFF)) == NULL) {
   +	  perror("getcwd");
   +	  exit(1);
   +	}
   +	if (PATH_BUFF < (strlen(p) + 1 + strlen(mymh) + 1)) {
   +	  fprintf(stderr, "init_file buffer is not enough: current = %d\n", PATH_BUFF);
   +	  exit(1);
   +	}
   +        sprintf(init_file, "%s%c%s", p, SLASH_CHAR, mymh);
   +	free(p);
   +      }
   +    } else {
   +      /* set standard MH profile path */
   +      sprintf(init_file, "%s%c%s", home_dir, SLASH_CHAR, MH_INIT_FILE);
   +    }
   +  }
      buff1[0] = buff2[0] = '0';
      init_field[0].field_buff = &buff1[1];
      init_field[1].field_buff = &buff2[1];
   ----patch end----

   この patch を適用した mnews であれば、

     % env MH=/other/place/other_mh_profile mnews args...

   として、標準とは異なる MH 設定ファイルを利用できます。

   なお、/usr/local/share/doc/mnews/ ディレクトリ内に mnews 関連ドキュメ
   ントがありますので、こちらも随時参照して下さい。

同一グループへのリンク

グループ名: MH


間違い・追加情報を見付けた場合は、 修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで お知らせください。