WIDE's patch kit for R8 sendmail (2.5W beta) Aug.29,1995 中村 素典/WIDE Project
また 2.5W では以下のインフォメーションが syslog に mail.info で出力されます.
各種機能は以下のフラグによって制御できる。 FILEMACRO Gw/etc/sendmail.dw のようにファイルによるマクロ定義を 可能とする。 EXTEND_CLASS 拡張クラス文字 ^A-^z のサポート。C^[A-z] 等によるクラ ス定義、および $=^[A-z] によるクラス参照を可能とする。 EXTEND_MACRO 拡張マクロ文字 ^A-^z のサポート。D^[A-z] 等によるマク ロ定義、および $^[A-z] によるマクロ参照を可能とする。 ADJUST_TZ 一部のOSで出現すると思われる、TZ が +859 となる問題を 回避する。 LOGWVERSION newvers.sh による構築情報をデーモンスタートの際に syslog に出力する。 COMPILEOPTIONS コンパイルオプション文字列をオブジェクトに埋め込む。 CANON_MX_CNTL ネームサーバの MX レコードの参照によるメールアドレスの 補完機能の利用を I オプションで指定できるようにする。デ フォルトでは補完に MX レコードを利用しないようになる。 I オプションに ?nowildcardmx を指定することにより MX を 用いた補完が行なわれる(WildCardMXを利用しているところで は、?nowildcardmx を指定しない方がよいと思われる)。 CANON_OTHER メールアドレスの補完に CNAME, MX, A レコードの他の レコードも参照することを可能とする。現バージョンでは HINFO, MINFO, NS, NULL, PTR, SOA, TXT, WKS が利用可能。 それぞれ ?hinfo, ?minfo, ?ns, ?null, ?ptr, ?soa, ?txt, ?wks を I オプションに指定することで、参照されるように なる。検索の順序は、オプションに指定した順序に従う。 SHOW_MX_HOSTS -bt オプションによるアドレステストモードの際に、SMTP メーラに到達した場合に、MX ホストリストの表示を可能と する。テストの際に、3,0,mx user@domain のように、mx と いう疑似ルールセット名を指定することにより表示される。 AUTH_LOG X-Authentication-Warnings: ヘッダに出力されるメッセージ を syslog にも残すようにする。 ESMTPPEERSCLS SMTP 接続時の greeting メッセージが複数行ある場合に、 メーラによってはメールを送ることができないという問題が ある。BROKENSMTPPEERS を定義すればすべて一行に制限され るようになるが、この場合は特に指定しない限り ESMTP が 使用されない。ESMTPPEERSCLS を定義すると、クラス e の 指定により特定のホストに対する greeting メッセージを 一行に制限することができる。 例) Ce !all (すべてのホストに対して ESMTP を用いない) Ce !all .kyoto-u.ac.jp (区切りはスペース) (*.kyoto-u.co.jp のみ ESMTP を用いる) Ce !.kyoto-u.ac.jp !kyoto-u.ac.jp (*kyoto-u.co.jp のみ ESMTP を用いない) Ce !jpnkyoto.kyoto-u.ac.jp (jpnkyoto.kyoto-u.ac.jp のみ ESMTP を用いない) IDENTPEERSCLS SMTP 接続時に IDENT プロトコルによって、接続元のユーザ 情報を取得しようとするが、途中のゲートウェイや接続元の OS によっては、IDENT の接続エラーに伴って SMTP 接続も 同時に切断されてしまい、メールが受けとれない。 この現象は、syslog 以下のように Host unreach という記録 が残ることから判断できる。 NOQUEUE: SYSERR: putoutmsg (host.domain): error on output channel sending "220 ESMTP spoken here": Host is unreachable greeting が2行あることが問題になる場合は、Host unreach とは記録されないはずである。 IDENTPROTO を 0 に define すれば IDENT を用いなくなる が、特定のホストに対してだけは IDENT を用いたい場合に 定義する。これを定義すると、クラス i により IDENT を 用いるホストを指定することができる。 例) Ci !all (すべてのホストに対して IDENT を用いない) Ci !all .kyoto-u.ac.jp (区切りはスペース) (*.kyoto-u.co.jp のみ IDENT を用いる) Ci !.kyoto-u.ac.jp !kyoto-u.ac.jp (kyoto-u.co.jp のみ IDENT を用いない) Ci !jpnkyoto.kyoto-u.ac.jp (jpnkyoto.kyoto-u.ac.jp のみ IDENT を用いない) MX_SAFETY MX で示されているホストが存在しなかった場合に host not found エラーにならないようにする。 ALL_HASH_CMNT :include: や .forward で指定されるファイルでは、通常 行頭の # のみがコメントの開始を示すことになっているが、 行中の任意の位置で # が使えるようにしたい場合に定義す る。ただし # の直前の文字は必ずスペース文字であること。 QUICK_RESPONSE rmail などから -odq フラグつきで起動された場合、配送 エラーが発生しても、エラーメールは mqueue に一旦保存 される。このようなレスポンスメールについては、mqueue に落さずにすぐに配送するようにしたい場合に 1 にする。 (quick hack なので、注意されたし) LHS_CHECK_CNTL newaliases の実行の際には、aliases データベースの LHS (書き換えられる元のアドレス)が localmailer に到達する かどうかのチェックが行なわれる。sendmail.cf において あるユーザが local であるかどうかを aliases データベー スを用いて判定するようなルールを入れるなど特殊な設定 の下では、LHS のチェックによって newaliases がうまく 動作しなくなる。LHS_CHECK_CNTL を 1 に定義すると、 RHS をチェックするかどうかを指定するスイッチである option n の操作によって、同時に LHS のチェックについて も指定することができるようになる。 NO_ALIAS_ON_REBUILD sendmail.cf で $( $) のマップ参照によって aliases ファイルを参照するようにした場合、newaliases でハングアップすることがある。定義することにより newaliases の処理の場合のみ $( $) からの aliases ファイル参照を抑制する。 MULTI_MAILER ルールセット 0 のメーラディスパッチルールにおいて、 一行に $#...$@...$:... を繰り返し記述できるようにする。 $#smtp.... $#uucp.... のように書くことにより、smtp mailer による配送に失敗したら uucp mailer に切替える ようにすることができる(テストが十分でないので注意)。 ANOTHER_MXPB MX レコード単位の相乗り判定を行なうコードを有効にする。 (テストが十分でないので注意) RCPT_NEXT SMTP/RCPT TO で temp fail した場合にも下位の MX ホスト への送信を試みるようにする。ANOTHER_MXPB を定義した場合 のみ有効となる。 CO_RESOLV 2.5W に関する注意を参照 NON_BLOCK_CONNECT 2.5W に関する注意を参照 その他、Sony NEWS で拡張されている -J オプションへの対応(ただし、オプ ションをエラーにせず単に無視するだけ)もおこなっている。
===== Changes ===== [[ Aug. 29, 1995/8.6.12+2.5Wbeta8/motonori ]] domain.c: fixes on pointer references deliver.c: changes on CO_STAT res_send.c: base is changed to recent version (but a bit old) Makefile.WIDE.Linux added [[ May. 17, 1995/8.6.12+2.5Wbeta7/motonori ]] version.c: version string was selected 2.4W always, sigh. [[ May. 17, 1995/8.6.12+2.5Wbeta6/motonori ]] res_send.c: small changes for ULTRIX Makefile.WIDE.ULTRIX: clean up version.c: version string is change to 2.4W if NON_BLOCK_CONNECT=0 and CO_RESOLV=0. [[ May. 15, 1995/8.6.12+2.5Wbeta5/motonori ]] Makefile.WIDE.OSF1 added. Makefile.WIDE.NEWS: NEWS-OS 6.1 supported. conf.c: changes for FreeBSD domain.c: fix on initialization problem of CANON_OTHER (dumps core) (reported by TAKEI jun <takei@csm.jcsat.co.jp>) fix on MX_SAFETY (user@co.jp was not failed immediately) (reported by Masanori Yanagawa <yana@bug.co.jp>) parseaddr.c: fix on MULTI_MAILER (memory allocation) (reported by Hajimu UMEMOTO <ume@calm.imasy.or.jp>) deliver.c: !EX_OK -> EX_TEMPFAIL in ANOTHER_MXPB feature to avoid to try lower MX host if remote protocol error occurs res_send.c: clean up [[ Apr. 16, 1995/8.6.12+2.5Wbeta4/motonori ]] fix on a botch of IRIXV [[ Apr. 14, 1995/8.6.12+2.5Wbeta3/motonori ]] needless reverse patch deleted [[ Apr. 1, 1995/8.6.12+2.5Wbeta2/motonori ]] modified for 8.6.12 [[ Mar. 12, 1995/8.6.11+2.5Wbeta2/motonori ]] modified for 8.6.11 res_send.c: some fix on var-type mismatch use select() for usleep() Makefile.WIDE.Solaris fix on command path Makefile.WIDE.{ULTRIX,IRIX} added [[ Feb. 23, 1995/8.6.10+2.5Wbeta1/motonori ]] modified for 8.6.10 recipient.c: minor fix on comment management in :include: file. one more thing from umura@nn.solan.chubu.ac.jp [[ Jun. 29, 1994/8.6.9+2.4W/motonori ]] conf.c: getla() の EWS 対応 deliver.c: DG/UX で localmailer を起動するときに必要となる変更 copyright notice [[ Apr. 22, 1994/8.6.9+2.4Wb/motonori ]] Makefile.WIDE.*: nroff を ${NROFF} に置き換えた BROKEN_LISTEN の定義の削除 daemon.c: BROKEN_LISTEN で行っていた処理が 8.6.9 に実装されたので, パッチから削除 conf.h,Makefile.WIDE.NEWS,Makefile.WIDE.EWS: /usr/ucb/cc でなく /usr/bin/cc を利用するように変更 conf.c,conf.h: SYS5SIGNALS for NEWS, EWS use statvfs() with NEWS-OS 6.0.1 [[ Apr. 8, 1994/8.6.8+2.4Wb2/motonori ]] main.c: showmxhost() の定義の矛盾を解決 conf.h: EPROTO_QUEUE のデフォルトを 0 にした メールを返送すべき場合にも mqueue に溜ってしまう問題がある readcf.c: ポインタ bp の値を変更してはいけないため,strcpy() を利用 Makefile.WIDE.LUNA: more changes for LUNA88K/Mach Makefile.WIDE.HP-UX: newly added [[ Mar. 18, 1994/8.6.8+2.4Wb/motonori ]] Makefile.WIDE.*: use MAKE macro changes for LUNA88K/Mach [[ Mar. 16, 1994/8.6.7+2.4Wb5/motonori ]] Makefile.WIDE.BSDI: BSDI 1.1 に対応 conf.h: BSDI の部分に undef SETPROCTITLE を追加 NEWS-OS 6.0.1 のサポート EWS-UX/V 4.1 のサポート Makefile.WIDE.NEWS NEWS-OS 6.0.1 のサポート newvers.sh: NEWS-OS 6.0.1 ではデフォルトで ascii にならないので,明示的に LANG=C を設定 Makefile.WIDE.EWS 新規にサポート Makefile.WIDE.NEWS, Makefile.WIDE.EWS: fix on dirent problem of ucb compiler on SVR4 [[ Mar. 14, 1994/8.6.6+2.4Wb/motonori ]] Makefile.WIDE.Sun40: Makefile.WIDE.Sun と統合のため削除 Makefile.WIDE.Sun: SunOS 4.0.3 をサポート Makefile.WIDE.*: mailq manual page の記述を追加 install の時バックアップを残す conf.h: HASSTATFS の定義方式変更に対応 conf.c: HASSTATFS の定義方式変更によりオリジナルに戻す alias.c, parseaddr.c, version.c: NO_ALIAS_ON_REBUILD の実装 mci.c: GET_PEER_ADDR の削除によりオリジナルに戻す(8.6.6に採用) srvrsmtp.c: X-Auth-Warn に関する変更に対応 deliver.c: MX_SAFETY の実装 [[ Jan. 25, 1994/8.6.5+2.3W4/motonori ]] alias.c: LHS_CHECK_CNTL を実装 conf.h, version.c: LHS_CHECK_CNTL, MULTI_MAILER の追加 daemon.c: BROKEN_LISTEN の出力文字の調整 deliver.c: fix on ANOTHER_MXPB deliver.c, parseaddr.c, sendmail.h: MULTI_MAILER の実装 recipient.c: fix on ALL_HASH_CMNT (by kizu@ics.es.osaka-u.ac.jp) srvrsmtp.c: X-Auth-Warn: ヘッダに関する処理の位置の変更 (動作を正しくすることが有害かもしれないので実質的な変更はしていない) usersmtp.c: putheader 実行時のタイムアウトが短いことがあるので、長めに変更 (sendmail.cf で設定できるようにすべきである) [[ Jan. 16, 1994/8.6.5+2.3W3/motonori ]] main.c: obsolete のチェックがシビアになったため NEWS の -J オプション操作の 位置が不適当になったことによる修正 daemon.c: high load ave 時に 421 メッセージの後に続けて 221 メッセージを送る ように変更(RFC821 に従う) [[ Jan. 16, 1994/8.6.5+2.3W2/motonori ]] deliver.c: 2.3W1 での変更を元に戻す mci.c: syslog に記録する IP address が (0) のままにならないようにするコード を追加(INET domain にのみ対応; GET_PEER_ADDR) [[ Jan. 14, 1994/8.6.5+2.3W1/motonori ]] deliver.c: localhost から発信した /etc/aliases 記載の prog/file mailer 宛の メールの処理が必ず daemon の権限で行なわれるようにした(PROG_DAEMON) [[ Jan. 14, 1994/8.6.5+2.3W/motonori ]] Makefile.WIDE.*: install mode が 666 になっていたものを 644 に修正 all: 8.6.5 へのパッチに修正、2.3W としてリリース [[ Jan. 12, 1994/8.6.5Beta11+2.3W/motonori ]] sendmail.h: LUNA に関する記述を conf.h に移動 conf.h: マクロ名 LUNA を luna に変更 SHOW_MX_HOSTS, AUTH_LOG を追加 SunOS 4.0.3 の設定が 8.6.5 に入ったため削除 その他の設定を調整 daemon.c: main.c: SHOW_MX_HOSTS のコードを実装 deliver.c: ANOTHER_MXPB のコードを大幅に変更 Makefile.WIDE.LUNA: Makefile.WIDE.Sun40: time.h の二重読み込みの防止措置 Makefile.WIDE.LUNA: conf.h: dirent を direct で代用 LUNA2/LUNA88K (from demizu) version.c: COMPILEOPTION の実装 Makefile.WIDE.*: -DNDBM -DNEWDB の定義を別の行に分離 bind4.9 のための -l44bsd をコメントとして追加 -DIDENTPROTO=0 をコメントとして追加 Makefile.WIDE.NEWS: Makefile.WIDE.Sun*: -DBROKEN_LISTEN=1 を定義 daemon.c: BROKEN_LISTEN を実装 IDENTPEERSCLS を実装 main.c: AUTH_LOG を実装 recipient.c: ALL_HASH_CMNT を実装 srvrsmtp.c: BRKNSMTPPRSCLS を ESMTPPEERSCLS に変更 savemail.c: QUICK_RESPONSE を実装 all: 8.6.5Beta11 へのパッチに修正 [[ Nov. 1, 1993/8.6.4+2.2W/motonori ]] all: 8.6.4 へのパッチに修正 [[ Oct. 25, 1993/8.6.3+2.2W/motonori ]] Makefile.WIDE.SEIUX: SUMI Station 用 Makefile を追加 (from shige-y@is.aist-nara.ac.jp) Makefile.WIDE.Sun40: SunOS 4.0.3 用の Makefile を追加 conf.h: SEIUX、SunOS 4.0.3 に対する定義を追加 Makefile.WIDE.*: -I${BINDDIR}/compat/include を INCDIRS に追加 all: 8.6.3 へのパッチに修正 [[ Oct. 16, 1993/8.6.2+2.2W/motonori ]] Makefile.WIDE.Sun: -DHASUNAME を追加 all: 8.6.2 へのパッチに修正 [[ Oct. 9, 1993/8.6.1+2.2W/motonori ]] Makefile.WIDE.BSDI: 新たに追加 (from shigeya@fortune.co.jp) Makefile.WIDE.LUNA: Makefile.WIDE.NEWS: Makefile.WIDE.Sun: MAKEFILE を追加 nroff の -h フラグを削除 (Sun) domain.c: readcf.c: T_TXT を定義するように変更 EXTEND_MACRO を delaied macro expansion にも対応 macro.c: EXTEND_CLASS に関する処理を readcf.c に移動 all: 8.6.1 へのパッチに修正 [[ Oct. 7, 1993/8.6+2.2W/motonori ]] domain.c: readcf.c: T_TXT が arpa/nameser.h に登録されていない場合に対処した (reported by kozo@e.dendai.ac.jp) conf.h: NEWS-OS 4.2R, UNIOS-U 3.0 用のマクロ定義記述を追加 sigfunc_t が int を用いて定義されるように修正 (NEWS) (portability changes for NEWS are from matusita@osaka-u) conf.c: setpgid() に関する対応を conf.h で行なうようにした (LUNA,NEWS) sys/vfs.h を読み込むようにした (LUNA,NEWS) Makefile.WIDE.LUNA: Makefile.WIDE.NEWS: Makefile.WIDE.Sun: LADEF, OSDEF の定義を conf.h に移動 (LUNA, NEWS) いくつかの &&, || を if then else fi に変更 LUNA の test で -x が使えないことに対応 make clean を修正 OSDEF -> ENVDEF に変更 SRCADD, OBJADD を追加 readcf.c: 8.6 への移行時に発生した EXTEND_CLASS に関するバクを修正 macro.c: 8.6 への移行時に発生した EXTEND_MACRO に関するバクを修正(from toku@dit) aliases.0: newaliases.0: sendmail.0: 4.3BSD Reno の tmac.* により作成 all: 2.2W としてリリース [[ Oct. 6, 1993/8.6+2.1W/motonori ]] vsprintf.c: 8.4 から conf.c に含まれるようになったため削除 Makefile.WIDE.LUNA: Makefile.WIDE.NEWS: Makefile.WIDE.Sun: newvers.sh が実行可能でない場合にのみ chmod +x を行なうように変更 コンパイル作業用ディレクトリを作成するようにしたので、複数アーキテ クチャのためのコンパイルを同一ディレクトリで行なうことが可能 make install が正しく動作するように修正 make restart を追加 ディレクトリ情報の調整 (thanks to yamaoka@titech, matusita@osaka-u, kazuto@aoyama) newvers.sh umask 0022 を追加 readcf.c: filemacro() において munchstring() の宣言を追加(from minmin@astec) goto fm_exit; により処理を抜けるように bug fix (SCANF を定義して コンパイルした場合に問題があった) fileclass() の仕様変更に追従 main.c: NewsOS ucbmail/binmail で指定される -J フラグに対してエラーを起こさ ないようにした(reported by matusita@ics.es.osaka-u.ac.jp) 日本語変換のためのコードは入れていない srvrsmtp.c: ESMTP greeting を解釈できないホストのために、クラス b に定義された ホストからの接続に対しては ESMTP greeting を送らないことを可能にする ためのコートを挿入した conf.h で BRKNSMTPPRSCLS を 1 にすることにより有効となる sendmail.restart: tail -5 /var/log/syslog をコメントとして追加 conf.c: NewsOS に setpgid() が無いことに対応 all: sendmail 8.6 へのパッチに修正、2.1W としてリリース [[ Jul. 26, 1993/8.5+2.0Wbeta2/1.6/motonori ]] domain.c: trymx が False の場合に、ローカルドメイン名を補った MX に対する query を行なわないように変更 clock.c: conf.c: オリジナルに戻す [[ Jul. 24, 1993/8.5+2.0Wbeta/1.5/motonori ]] all: sendmail 8.5 へのパッチに修正 [[ Jul. 23, 1993/8.4+2.0Wbeta/1.5/motonori ]] sendmail.restart: /etc/sendmail.pid の二行目に起動時オプションが保存されるようになった ことに対応 clock.c: sleep() の型宣言が SLEEP_T によって行なわれるようになったので、NEWS のための変更を削除 conf.c: pid_t を Makefile で定義するように変更し、オリジナルに戻した Makefile.WIDE.LUNA: Makefile.WIDE.NEWS: Makefile.WIDE.Sun: Version.c -> version.c の依存を追加 VOIDSLEEP の定義を削除し、SLEEP_T に関する宣言を追加 (NEWS) pid_t の定義を追加 (NEWS,LUNA) NOWAITPID の定義を削除 (NEWS,LUNA) daemon.c: CANON_MX_CNTL に関する処理を domain.c から移動 domain.c: CANON_MX_CNTL に関する処理を削除 (daemon.c への移動のため) all: sendmail 8.4 へのパッチに修正 [[ Jul. 14, 1993/8.3+2.0Wbeta2/1.4/motonori ]] Makefile.WIDE.LUNA: Makefile.WIDE.NEWS: Makefile.WIDE.Sun: sendmail: sendmail.mx sendmail.nomx の記述を入れた clean: で rm の引数の間にスペースが抜けていた部分があったのを修正 (toku) readcf.c: I オプションで、?nowildcardmx, ?hinfo, ?minfo, ?ns, ?null, ?ptr, ?soa, ?txt, ?wks を指定できるようにした domain.c: NO_CANON_MX -> CANON_MX_CNTL getcanonname() で問い合わせを行なうレコードを可変にした 絶対アドレスとして問い合わせを行なう場合に、追加されたレコード検索を 行なわないようにした [[ Jul. 14, 1993/8.3+2.0Wbeta/1.3/motonori ]] Makefile.WIDE.LUNA: Makefile.WIDE.NEWS: Makefile.WIDE.Sun: Makefile.dist.* からファイル名を変更 sendmail.mx, sendmail.nomx を作成するように修正 Sun のものは -Bstatic をコメントアウトした conf.h: NAMED_BIND の define は Makefile.WIDE で行なうようにしたため コメントアウトした all: sendmail 8.3 へのパッチに修正 [[ Jul. 12, 1993/8.2+2.0Wbeta/1.2/motonori ]] Makefile.dist.LUNA: Makeifle.dist を UNIOS-B 1.6 に対応 GNU/dirent を用いてコンパイルが可能であることを確認した vsprintf.c: UNIOS-B 1.6 のために Tahoe から輸入 all: sendmail 8.2 へのパッチに修正 [[ Jul. 1, 1993/8.1C+2.0Wbeta/1.1/motonori ]] sendmail.hf: WIDE版パッチに関するメッセージを記述 sendmail.restart: リスタート用スクリプトの追加 conf.h: typo の修正 all: sendmail 8.1C へのパッチに修正 [[ Jun. 14, 1993/8.1(B)+2.0Wbeta/1.0/motonori ]] newvers.sh: 1.6W for sendmail.5.67 より輸入(origin: BIND4.8.2) (newvers.sh による情報は、1.6W のように syslog に出力されるようには なっていない) Makefile.dist.Sun: Makefile.dist を SunOS4.1.1 に対応 Makefile.dist.NEWS: Makefile.dist を NEWS-OS 4.1C に対応 arpadate.c: ADJUST_TZ のための変更(1.6Wから輸入) clock.c: NEWS-OS 4.1C では sleep() の返値 が void であることによる変更 (VOIDSLEEP フラグは makefile.dist.NEWS で定義される) conf.c: NEWS-OS 4.1C が waitpid()を持たないことによる変更 (NOWAITPID フラグは makefile.dist.NEWS で定義される) conf.h: 各種フラグの設定 NEWS-OS 4.1C のために O_ACCMODE を定義 domain.c: CANON_OTHER NO_CANON_MX のための変更 (これらを定義しない場合には、domain.c への変更は必要ない) macro.c: parseaddr.c: EXTEND_CLASS EXTEND_MACRO のための変更 readcf.c: EXTEND_CLASS EXTEND_MACRO FILEMACRO のための変更 1.6W での EXTEND_CLASS EXTEND_MACRO の実装では 0x00-0x3f へマップする ようになっていたが、R8 では 0x00-0x3f のエリアも利用されるようになった ため、素直に 0xc0-0xff にマップするように変更した sendmail.h: EXTEND_MACRO のためのマクロバッファの拡張