[Mew-dist 04952] Re: Refile
Hajimu UMEMOTO ( 梅本肇 )
ume at example.com
1998年 5月 31日 (日) 00:35:45 JST
梅本@日立です。
fetchmail の話題で恐縮です。(_ _)
>>> Sat, 30 May 1998 15:13:46 +0900 の刻に「矢野」、すなわち
>>> Toru YANO (矢野暢) <ytoru at example.com> 氏曰く
矢野> これは、man を引いてそれっぽいのを追加してみたのです。
なるほど。
矢野> (This option is provided to pacify people who are
矢野> paranoid about having an MTA edit mail headers and
矢野> want to know they can prevent it, but it is gener-
矢野> ally not a good idea to actually turn off rewrite.)
矢野> だって。
偏執病者扱いされたくないので :-) hogehoge (nanntoka) <addr> を理解でき
るようにしてみました。テストはほとんどしていませんので、at your own
risk ということで。
あと、IM のキューを読んで、POP3 XTND XMIT で送信する機能と、TIS FWTK
の tn-gw 越え機能を追加して使っていたりします。こんなのって、需要ありま
すかね?
後者のほうはともかく、前者は、SPAM の踏台対策で、どこからでも自分の
ISP の sendmail に投げられる状況じゃなくなって来たので、ユーザ認証によっ
て送信を受け付けるという仕掛けが必要と感じて、追加しました。ちなみに、不
完全ながら、IM の方にも追加してます。
# ちょっとは Mew の話題に近付けたかな? ^^;
-------------- next part --------------
--- rfc822.c.orig Tue Apr 21 22:09:59 1998
+++ rfc822.c Sat May 30 23:31:08 1998
@@ -18,6 +18,7 @@
#ifdef TESTMAIN
static int verbose;
+char *program_name = "rfc822";
#endif /* TESTMAIN */
char *reply_hack(buf, host)
@@ -25,7 +26,7 @@
char *buf; /* header to be hacked */
const char *host; /* server hostname */
{
- char *from, *cp, last_nws = '\0';
+ char *from, *cp, last_nws = '\0', *parens_from = NULL;
int parendepth, state, has_bare_name_part, has_host_part;
int addresscount = 1;
@@ -105,13 +106,19 @@
* an obscure misfeature described in sections
* 6.1, 6.2.6, and A.1.5 of the RFC822 standard.
*/
- else if ((*from == ',' || HEADER_END(from) || from[1] == '(')
+ else if ((*from == ',' || HEADER_END(from))
&& has_bare_name_part
&& !has_host_part
- && last_nws != ';' && last_nws != ')')
+ && last_nws != ';')
{
int hostlen;
+ char *p;
+ p = from;
+ if (parens_from) {
+ from = parens_from;
+ parens_from = NULL;
+ }
while (isspace(*from) || (*from == ','))
--from;
from++;
@@ -120,8 +127,15 @@
cp[hostlen+1] = *cp;
*from++ = '@';
memcpy(from, host, hostlen);
- from += hostlen;
+ from = p + hostlen + 1;
has_host_part = TRUE;
+ }
+ else if (from[1] == '('
+ && has_bare_name_part
+ && !has_host_part
+ && last_nws != ';' && last_nws != ')')
+ {
+ parens_from = from;
}
else if (!isspace(*from))
has_bare_name_part = TRUE;
-------------- next part --------------
梅本 肇 @ インターネット互助会横浜
ume at example.com ume at example.com http://www.imasy.or.jp/~ume/
プログラムは書いた人の意図ではなく書かれた通り動く
Mew-dist メーリングリストの案内