head 1.43; access; symbols LMTP2NNTP_1_4_1:1.43 LMTP2NNTP_1_4_0:1.43 LMTP2NNTP_1_3_0:1.42 LMTP2NNTP_1_3b2:1.42 LMTP2NNTP_1_3b1:1.42 LMTP2NNTP_1_3a3:1.42 LMTP2NNTP_1_3a2:1.42 LMTP2NNTP_1_3a1:1.42 LMTP2NNTP_1_2_0:1.41 LMTP2NNTP_1_2b4:1.41 LMTP2NNTP_1_2b3:1.41 LMTP2NNTP_1_2b2:1.41 LMTP2NNTP_1_2b1:1.40 LMTP2NNTP_1_2a8:1.40 LMTP2NNTP_1_2a7:1.40 LMTP2NNTP_1_2a6:1.37 LMTP2NNTP_1_2a5:1.37 LMTP2NNTP_1_2a4:1.36 LMTP2NNTP_1_2a3:1.36 SOURCE_RESTRUCTURING_AFTER:1.33 SOURCE_RESTRUCTURING_BEFORE:1.33 LMTP2NNTP_1_2a1:1.33 LMTP2NNTP_1_1_1:1.33 LMTP2NNTP_1_1_0:1.33 LMTP2NNTP_1_1b4:1.33 LMTP2NNTP_1_1b3:1.33 LMTP2NNTP_1_1b2:1.33 LMTP2NNTP_1_1b1:1.31 LMTP2NNTP_1_0_0:1.21 LMTP2NNTP_0_9_7:1.20 LMTP2NNTP_0_9_6:1.20 LMTP2NNTP_0_9_5:1.20 LMTP2NNTP_0_9_4:1.13 LMTP2NNTP_0_9_3:1.8 LMTP2NNTP_0_9_2:1.6 LMTP2NNTP_0_9_1:1.6 LMTP2NNTP_0_9_0:1.6; locks; strict; comment @# @; 1.43 date 2005.04.22.21.14.03; author thl; state Exp; branches; next 1.42; 1.42 date 2003.09.25.07.25.27; author thl; state Exp; branches; next 1.41; 1.41 date 2003.02.10.10.13.11; author thl; state Exp; branches; next 1.40; 1.40 date 2003.01.30.19.45.19; author rse; state Exp; branches; next 1.39; 1.39 date 2003.01.30.19.42.12; author rse; state Exp; branches; next 1.38; 1.38 date 2003.01.30.13.41.50; author thl; state Exp; branches; next 1.37; 1.37 date 2002.04.18.13.31.27; author thl; state Exp; branches; next 1.36; 1.36 date 2002.01.31.15.13.16; author thl; state Exp; branches; next 1.35; 1.35 date 2002.01.09.13.51.59; author thl; state Exp; branches; next 1.34; 1.34 date 2001.12.31.15.15.36; author thl; state Exp; branches; next 1.33; 1.33 date 2001.10.15.14.22.12; author thl; state Exp; branches; next 1.32; 1.32 date 2001.10.15.10.13.50; author thl; state Exp; branches; next 1.31; 1.31 date 2001.10.12.13.23.52; author thl; state Exp; branches; next 1.30; 1.30 date 2001.10.12.12.26.26; author thl; state Exp; branches; next 1.29; 1.29 date 2001.10.12.08.57.51; author thl; state Exp; branches; next 1.28; 1.28 date 2001.10.12.07.43.31; author thl; state Exp; branches; next 1.27; 1.27 date 2001.10.09.20.12.30; author thl; state Exp; branches; next 1.26; 1.26 date 2001.10.09.10.19.12; author rse; state Exp; branches; next 1.25; 1.25 date 2001.10.09.08.22.29; author thl; state Exp; branches; next 1.24; 1.24 date 2001.10.08.14.30.11; author thl; state Exp; branches; next 1.23; 1.23 date 2001.10.08.13.50.01; author rse; state Exp; branches; next 1.22; 1.22 date 2001.10.04.16.07.16; author thl; state Exp; branches; next 1.21; 1.21 date 2001.09.13.13.45.12; author thl; state Exp; branches; next 1.20; 1.20 date 2001.09.12.07.29.23; author thl; state Exp; branches; next 1.19; 1.19 date 2001.09.10.14.11.33; author thl; state Exp; branches; next 1.18; 1.18 date 2001.09.07.13.53.16; author thl; state Exp; branches; next 1.17; 1.17 date 2001.09.05.15.01.57; author thl; state Exp; branches; next 1.16; 1.16 date 2001.09.05.09.14.27; author thl; state Exp; branches; next 1.15; 1.15 date 2001.09.04.09.46.06; author rse; state Exp; branches; next 1.14; 1.14 date 2001.09.03.15.06.29; author thl; state Exp; branches; next 1.13; 1.13 date 2001.08.30.13.56.38; author thl; state Exp; branches; next 1.12; 1.12 date 2001.08.30.11.53.25; author thl; state Exp; branches; next 1.11; 1.11 date 2001.08.30.09.01.59; author thl; state Exp; branches; next 1.10; 1.10 date 2001.08.30.08.35.44; author thl; state Exp; branches; next 1.9; 1.9 date 2001.08.29.14.58.21; author thl; state Exp; branches; next 1.8; 1.8 date 2001.08.28.13.12.58; author thl; state Exp; branches; next 1.7; 1.7 date 2001.08.28.11.29.40; author thl; state Exp; branches; next 1.6; 1.6 date 2001.08.16.15.00.50; author thl; state Exp; branches; next 1.5; 1.5 date 2001.08.14.08.15.25; author thl; state Exp; branches; next 1.4; 1.4 date 2001.08.07.09.05.55; author thl; state Exp; branches; next 1.3; 1.3 date 2001.08.02.14.58.39; author thl; state Exp; branches; next 1.2; 1.2 date 2001.07.24.11.32.07; author thl; state Exp; branches; next 1.1; 1.1 date 2001.07.17.12.40.07; author thl; state Exp; branches; next ; desc @@ 1.43 log @spell checking @ text @## ## OSSP lmtp2nntp - Mail to News Gateway ## Copyright (c) 2001-2003 Ralf S. Engelschall ## Copyright (c) 2001-2003 The OSSP Project ## Copyright (c) 2001-2003 Cable & Wireless Germany ## ## This file is part of OSSP lmtp2nntp, an LMTP speaking local ## mailer which forwards mails as Usenet news articles via NNTP. ## It can be found at http://www.ossp.org/pkg/tool/lmtp2nntp/. ## ## This program is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License ## as published by the Free Software Foundation; either version ## 2.0 of the License, or (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this file; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 ## USA, or contact the OSSP project . ## ## lmtp2nntp.pod: LMTP to NNTP (manual page) ## =pod =head1 NAME B - mail to news gateway =head1 SYNOPSIS B [B<--childsmax|-C> I] [B<--daemonize|-D>] [B<--kill|-K>] [B<--pidfile|-P> I] [B<--acl|-a> I/I (LMTP daemon ACL)] [B<--bind|-b> I[I<:port>]|C<->|I (LMTP daemon bind)] [B<--client|-c> I[I<:port>] (NNTP client bind)] [B<--destination|-d> I[I<:port>] (NNTP client destination)] [B<--groupmode|-g> I] [B<--headerrule|-h> [I]:[I]:I
:[I]] [B<--include|-i> I] [B<--l2spec|-l> I] [B<--mailfrom|-m> I] [B<--nodename|-n> I] [B<--operationmode|-o> I] [B<--restrictheader|-r> I] [B<--size|-s> I] [B<--testfile|-t> I] [B<--timeoutlmtp> I] [B<--timeoutlmtpaccept> I] [B<--timeoutlmtpread> I] [B<--timeoutlmtpwrite> I] [B<--timeoutnntp> I] [B<--timeoutnntpconnect> I] [B<--timeoutnntpread> I] [B<--timeoutnntpwrite> I] [B<--user|-u> I] [B<--version|-v>] I<--newsgroup> I [I ...] =head1 DESCRIPTION The B program is an LMTP service for use in conjunction with an MTA (like Sendmail), providing a reliable real-time mail to news gateway. Input messages get their headers reformatted according to configurable rewrite rules. The article is then posted or fed into a remote NNTP service (like INN). Delivery must take place immediately or the transaction fails. B relies on the queuing capabilities of the MTA in order to provide a fully reliable service. The program returns proper delivery status notification which indicates successful completed action, persistent transient failure or permanent failure. Configuration files can be specified to reduce the complexity of command lines. Their content has a simple "command WHITESPACE argument" syntax where commands and their arguments map exactly to the long options, with dashes omitted. There is no artifical difference between using command line and using configuration files. The only practical impact is that the shell expands metacharacters while those have no special meaning inside the configuration file. However, shell style line concatenation through BACKSLASH and comments through HASH are supported. Options belong to one of the three classes SINGLE, FLAG or MULTI. Any option can be specified more than once. Those belonging to SINGLE and FLAG class can appear multiple times but only the last occurrence in terms of parsing sequence counts while those belonging to MULTI class handle their arguments as a array. SINGLE and MULTI require an argument, FLAG does not allow an argument. The following command line options and arguments are available: =over 4 =item B<--childsmax|-C> I Childs the daemon spawns at max. Default is 10. SINGLE. =item B<--daemonize|-D> Daemonize and detach from current terminal. FLAG. =item B<--kill|-K> Kill a previously run daemon. After processing this option the program is terminated so this option effectivly renders most other options invalid not including specification of a pidfile and logging. The pid must be listed in pidfile. FLAG. =item B<--pidfile|-P> I Pidfile holding the process ID. Written when daemonizing. Read when killing a previously run daemon. Care must be taken when using relative path names as daemonizing changes the current working directory to '/' before the file is opened. SINGLE. =item B<--acl|-a> I/I (LMTP daemon ACL) Access control list specifying TCP INET addresses and masks where incoming LMTP connections are accepted from. Omitting a mask defaults to a host comparison. The mask is a CIDR style bitmask where /0 means no comparison and enforces a match. Omitting the wholly option defaults to 0.0.0.0/0 and [::] which allows access from any IPv4 or IPv6 host. It is possible to specify both inclusive and exclusive addresses, the latter have to be prefixed with an exclamation mark. In order to pass the ACL a client must match any inclusion and not match any exclusion. If you specify exclusions only, a fake inclusion of 0.0.0.0/0 and [::] is appended internally. Any addr can be a name which will be resolved on program launch time. MULTI. =item B<--bind|-b> I[I<:port>]|C<->|I (LMTP daemon bind) Bind address accepting incoming LMTP connections. Supported are "C<->" for stdio, I[:perms] for Unix Domain socket with optional chmod-like permissions and I[I<:port>] for TCP INET socket. Omitting this option defaults to stdio. The path for a UNIX domain socket must start with a slash. The addr can be a name which will be resolved on program launch time. SINGLE. =item B<--client|-c> I[I<:port>] (NNTP client bind) Client connections for outgoing NNTP communication bind to this address. If an address is specified but port is omitted the kernel chooses an ephemeral port. If you want to specify a port but no address then replace address with all zeros. If completely omitted, no assumptions are made which causes the kernel to choose an address based on routing information and an ephemeral port. The addr can be a name which will be resolved on program launch time. SINGLE. =item B<--destination|-d> I[I<:port>] (NNTP client destination) Destination hostname or address and optional TCP port of a NNTP service. Unless a port is specified, getserbyname(nntp) is queried with fallback to 119/tcp. If C<-d> option is ommited, C is used and if this doesn't resolve, C is assumed. Any addr can be a name which will be resolved on program launch time. It is assumed that multiple servers are used to increase the reliability of the news system and to speed up distribution by posting the same article to more than one server. In regard to this program they must provide the same groups and talk to each other. MULTI. =item B<--groupmode|-g> I Groupmode configures news group(s). Possible values are C (default), C and C
. In C mode, the Cs specified as command line arguments are ultimate destinations for the received messages. Addresses from envelope and headers are ignored. In C mode the newsgroup(s) are taken from the LMTP envelope, in C
mode the newsgroup(s) are taken from the header. In all modes C header is rewritten. In C and C
mode groups must still be specified as newsgroup options. However, in these modes the newsgroup options are filters representing allowed groups. Filters can be specified as wildmat's. MULTI. =item B<--headerrule|-h> [I]:[I]:I
:[I] Header rewriting rule. A message received by the LMTP server is split into header and body. The header is further split into a list where the headernames are unique keys to access single- or multivalues. The values are kept in sequence as they appeared in the original message. The gateway processes each rule in priority order. Small I numbers are processed first. The default prioriy is 500. Each rule can modify a header and thus change the input of the remaining rules. If a I is given, the rule processes all currently existing headers that match the regular expression. A new header I
with I will be created. With no I given, a new header with name I
and data I is created. In both cases, the new header will replace an existing header with the same name. Also, if the name or value ever becomes empty, the header is removed. Omitting I and nothing found to replace, the new header will be appended. Processed headers will always be single-valued. Omitting the I means the (matching) I
(s) will be deleted. The headderrules support PCRE (Perl compatible reguar expression) and if a I was used, the matching elements are available to I
and I as "DOLLAR NUMBER". The I is also processed through a variable expansion library which has access to all command line options, many internal variables and all currently existing headers. The expansion allows powerful constructs like joining multivalues into a single value. MULTI. Functional diagram: foreach rule if rule has regex foreach header if regex matches create new header expand regex references into headername if headername is empty delete header if headervalue is empty delete header expand regex references into headervalue expand variables into headervalue if headervalue is empty delete header replace existing header else (= rule has no regex) create new header if headervalue is empty delete header expand variables into headervalue replace existing or append new header Further reading: - regular expressions see 'pcre' manual page - variable expansion see 'lib_var/var.pod' and 'lib_var/var_play' Variables: The variables use a hierarchical name space scheme. All options are available through '${option.I}'. For options of class MULTI this yields the first element. Other elements can be accessed through '${option.I[I]}'. All headers can be accessed through '${msg.header.I}' and again, indexes are supported for multivalued headers. Inside variables, functions can be accessed through '%functionname'. Currently, only %createmessageid is available which creates a value properly suitable for a Message-ID: header. =item B<--include|-i> I Include a configuration file. There is no artifical limitation on the number and levels of configuration files supported. However, no attempt is made to prevent recursion. Order of inclusion matters for SINGLE and FLAG option classes. MULTI. =item B<--l2spec|-l> I L2 channel tree specification. The full functionality of lib_l2 is exposed to the user, see 'lib_l2/l2.pod' when it becomes available and have a look at the example configuration file in the meantime. SINGLE. =item B<--mailfrom|-m> I "Mail From:" envelope restriction to limit sender addresses. If omitted, anyone can send mail. The value to be compared includes the angle brackets. Use a PCRE (Perl compatible reguar expression) for I. SINGLE. =item B<--nodename|-n> I Own FQDN used in LMTP and NNTP protocols. This overrides the nodename returned by uname(3). SINGLE. =item B<--operationmode|-o> I Set fake status or operationmode. Possible values for I are C, C or a string in "LLL/D.D.D" format used to fake a LMTP return code. In C mode articles are sent to the NNTP server(s) using POST command. Before posting, a duplicate check using STAT command is issued. In C mode articles are sent to the NNTP server(s) using IHAVE command. Specifying a return code and DSN replaces the post/ feed logic by a noop and assumes the given string must be returned to the LMTP side. The slash is replaced by a space internally. The default is "553/5.7.1" meaning "Requested action not taken: mailbox name not allowed/ Delivery not authorized, message refused". This is useful for debugging LMTP setups without engaging NNTP. Fake mode makes it possible to run without any B<-d> option. However, if B<-d> option is given the NNTP client tries to connect but it's return codes are ignored. SINGLE. =item B<--restrictheader|-r> I Restrict messages by header. Messages with a matching restrictheader are rejected. If omitted no restrictions apply. Matching is done before headers are rewritten. Use a PCRE (Perl compatible reguar expression) for I. SINGLE. =item B<--size|-s> I Size limitation on message in bytes. Default is 8388608 (8M). =item B<--testfile|-t> I Testfile for headerrule. Allows debugging without LMTP or NNTP activity. The file must be in RFC822 E-Mail format. Use this option for debugging only, it disables both the mail server and news client. =item B<--timeoutlmtp> I LMTP server default timeout. Sets timeout for accept, read and write at once. Setting sec to zero means to wait infinite. Note that all LMTP timeouts only apply to socket operations, stdio always waits infinite. SINGLE. =item B<--timeoutlmtpaccept> I LMTP server accept timeout. Default is 0.SINGLE. =item B<--timeoutlmtpread> I LMTP server read timeout. Default is 10. SINGLE. =item B<--timeoutlmtpwrite> I LMTP server write timeout. Default is 10. SINGLE. =item B<--timeoutnntp> I NNTP client default timeout. Sets timeout for connect, read and write at once. Setting sec to zero means to wait infinite. SINGLE. =item B<--timeoutnntpconnect> I NNTP client connect timeout. Default is 360. SINGLE. =item B<--timeoutnntpread> I NNTP client read timeout. Default is 60. SINGLE. =item B<--timeoutnntpwrite> I NNTP client write timeout. Default is 60. SINGLE. =item B<--user|-u> I User identity to be set for program execution. SINGLE. =item B<--version|-v> Version information is printed, then program exits. FLAG. =item I<--newsgroup> I [I ...] =item I [I ...] Newsgroup name or match. Depending on groupmode, this is a newsgroup to post or feed the message to or it is a wildmat filter. Crosspostings succeed if delivery to I group succeeds. MULTI. =back =head1 SIGNALS Sending a USR1 signal to the program will flush the logging stream. =head1 DIAGNOSTICS If invoked it returns 0 on successful execution (not neccessarily meaning successful delivery!) or 1 on failed execution. Returning proper delivery status notification is part of the LMTP protocol. =head1 STANDARDS =over 4 =item RFC0821 Simple Mail Transfer Protocol. J. Postel. Aug-01-1982. (Format: TXT=124482 bytes) (Obsoletes RFC0788 ) (Obsoleted by RFC2821) (Also STD0010) (Status: STANDARD ) =item RFC0822 Standard for the format of ARPA Internet text messages. D. Crocker. Aug-13-1982. (Format: TXT=109200 bytes) (Obsoletes RFC0733) (Obsoleted by RFC2822) (Updated by RFC1123, RFC1138, RFC1148, RFC1327, RFC2156) (Also STD0011) (Status: STANDARD) =item RFC0977 Network News Transfer Protocol. B. Kantor, P. Lapsley. Feb-01-1986. (Format: TXT=55062 bytes) (Status: PROPOSED STANDARD) =item RFC1035 Domain names - implementation and specification. P.V. Mockapetris. Nov-01-1987. (Format: TXT=125626 bytes) (Obsoletes RFC0973, RFC0882, RFC0883) (Updated by RFC1101, RFC1183, RFC1348, RFC1876, RFC1982, RFC1995, RFC1996, RFC2065, RFC2136, RFC2181, RFC2137, RFC2308, RFC2535, RFC2845) (Also STD0013) (Status: STANDARD) =item RFC1652 SMTP Service Extension for 8bit-MIMEtransport. J. Klensin, N. Freed, M. Rose, E. Stefferud, D. Crocker. July 1994. (Format: TXT=11842 bytes) (Obsoletes RFC1426) (Status: DRAFT STANDARD) =item RFC1854 SMTP Service Extension for Command Pipelining. N. Freed. October 1995. (Format: TXT=14097 bytes) (Obsoleted by RFC2197) (Status: PROPOSED STANDARD) =item RFC1893 Enhanced Mail System Status Codes. G. Vaudreuil. January 1996. (Format: TXT=28218 bytes) (Status: PROPOSED STANDARD) =item RFC1894 An Extensible Message Format for Delivery Status Notifications. K. Moore, G. Vaudreuil. January 1996. (Format: TXT=77462 bytes) (Updated by RFC2852) (Status: PROPOSED STANDARD) =item RFC2034 SMTP Service Extension for Returning Enhanced Error Codes. N. Freed. October 1996. (Format: TXT=10460 bytes) (Status: PROPOSED STANDARD) =item RFC2606 Reserved Top Level DNS Names. D. Eastlake, A. Panitz. June 1999. (Format: TXT=8008 bytes) (Also BCP0032) (Status: BEST CURRENT PRACTICE) =item RFC2821 Simple Mail Transfer Protocol. J. Klensin, Editor. April 2001. (Format: TXT=192504 bytes) (Obsoletes RFC0821, RFC0974, RFC1869) (Status: PROPOSED STANDARD) =item RFC2980 Common NNTP Extensions. S. Barber. October 2000. (Format: TXT=57165 bytes) (Status: INFORMATIONAL) =back =cut @ 1.42 log @replace obsolete "command line arguments" with option terminology which reflects the use of a config file. (Damian Gerow) @ text @d73 1 a73 1 The article is then posted or feeded into d130 1 a130 1 the latter have to prefixed with an exclamation mark. In order to pass the ACL d148 1 a148 1 If you want to specify a port but no address then replace address with all zeroes. d184 1 a184 1 headernames are uniqe keys to access single- or multivalues. The values d243 1 a243 1 Inside variables, functions can be access through '%functionname'. d262 1 a262 1 "Mail From:" envelope restriction to limit sender addresses. If ommitted, anyone can send d290 1 a290 1 ommitted no restrictions apply. Matching is done before headers are @ 1.41 log @extend copyright messages based on CVS information @ text @d175 2 a176 2 C and C
mode groups must still be specified as command line arguments. However, in these modes the command line arguments are filters @ 1.40 log @remove trailing whitespaces from source tree @ text @d3 3 a5 3 ## Copyright (c) 2002-2003 Ralf S. Engelschall ## Copyright (c) 2002-2003 The OSSP Project ## Copyright (c) 2002-2003 Cable & Wireless Germany @ 1.39 log @Apply the standard OSSP copyright header, document ASCII art and fix URL to lmtp2nntp homepage. @ text @d157 1 a157 1 119/tcp. If C<-d> option is ommited, d159 1 a159 1 resolve, C is assumed. d272 1 a272 1 d304 1 a304 1 =item B<--timeoutlmtp> I @ 1.38 log @update documentation @ text @d2 4 a5 2 ## Copyright (c) 2001-2002 The OSSP Project ## Copyright (c) 2001-2002 Cable & Wireless Deutschland d9 1 a9 1 ## It can be found at http://www.ossp.org/pkg/lmtp2nntp/. @ 1.37 log @updated documentation, aligned and sorted source; @ text @d205 1 a205 1 for each rule d207 1 a207 1 for each header d210 1 a210 1 expanding regex references into header name d215 2 a216 2 expanding regex references into header value expanding variables into header value d219 2 a220 2 replace existing header //FIXME text above else d224 1 a224 1 expanding variables into header value d239 5 a243 1 multivalued headers. FIXME functions @ 1.36 log @moved --size option @ text @d36 29 a64 21 [B<-C> I] [B<-D>] [B<-K>] [B<-P> I] [B<-V>] [B<-a> I/I[,I/I[,...]] [B<-b> I[I<:port>]|C<->|I[:perms]] [B<-c> I[I<:port>]] [B<-d> I[I<:port>][,I[I<:port>], ...]] [B<-g> I] [B<-h> I
:] [B<-l> I[:I]] [B<-m> I] [B<-n> I] [B<-o> I] [B<-r> I] [B<-s> I] [B<-t> I=I[,I=I[,...]] [B<-u> I] [B<-v>] I [I ...] d70 2 a71 2 gateway. Input messages get their headers slightly reformatted to match Usenet news article format. The article is then posted or feeded into d75 1 a75 1 For this the program returns proper delivery status notification which d79 16 d99 1 a99 1 =item B<-C> I d101 1 a101 1 Childs the daemon spawns at maximum. Default is 10. d103 1 a103 1 =item B<-D> d105 1 a105 1 Daemonize program and detach from current terminal. d107 1 a107 1 =item B<-K> d109 1 a109 1 Kill the daemon. After processing this option the program is terminated so d112 1 d114 1 a114 1 =item B<-P> I d116 1 a116 1 Pidfile to remember the process ID when running as or killing the daemon. Care d118 1 a118 5 current working directory to '/'. =item B<-V> Very verbose logging. This means logging is unbuffered. d120 1 a120 1 =item B<-a> I/I[,I/I[,...]] (LMTP daemon ACL) d123 2 a124 3 LMTP connections are accepted from. This option can be specified more than once and it is possible to specify more than one addr/ mask per option as a comma-separated list. Omitting a mask defaults to a host comparison. The mask d126 2 a127 2 Omitting the wholly option defaults to 0.0.0.0/0 which allows access from everywhere. It is possible to specify both inclusive and exclusive addresses, d130 2 a131 2 exclusions only a fake inclusion of 0.0.0.0/0 is appended internally. Any addr can be a name to be resolved first. d133 1 a133 3 FIXME should we resolv on startup only or for every access or using dns ttl =item B<-b> I[I<:port>]|C<->|I (LMTP daemon bind) d139 2 a140 1 The addr can be a name to be resolved first. d142 1 a142 1 =item B<-c> I[I<:port>] (NNTP client bind) d146 2 a147 2 If you want to specify a port but no address replace address with all zeroes. If completely omitted, 0.0.0.0:0 is assumed which causes the kernel to choose d149 1 a149 1 be a name to be resolved first. d151 1 a151 1 =item B<-d> I[I<:port>][,I[I<:port>], ...] (NNTP client peer) d155 4 a158 5 119/tcp. If C<-d> option is ommited, the environment variable C is read, if this is undefined or empty C is used and if this doesn't resolve, C is assumed. This option can be specified more than once and it is possible to specify more than one host/ port per option as a comma-separated list. Any addr can be a name to be resolved first. It is d162 1 a162 1 talk to each other. d164 1 a164 1 =item B<-g> I d166 2 a167 1 Possible values for I are C (default), C and d176 1 d178 1 a178 1 =item B<-h> I
: d180 73 a252 16 Header with value to to be inserted into message before delivery. This option can be specified more than once. Useful for specifiying an moderator Email address to all outgoing news messages by applying an "Approved:" header. =item B<-l> I[:I] The level measures the degree and importance of output and can be any of PANIC, CRITICAL, ERROR, WARNING, NOTICE, INFO, TRACE or DEBUG. The recommended level for daily operations is NOTICE. The default name for logfile is "logfile". This program is using the logging library (l2) which is currently under development. An early access snapshot with limited functionality has been included. Currently the common denominator of usage between lmtp2nntp and l2 is to use logging into a file only. Note that this will change soon as during integration of l2 into lmtp2nntp logging channels for local syslog and a SMTP client were already finished and IRC and NNTP clients are under development. d254 1 a254 1 =item B<-m> I d256 1 a256 1 "MAIL From:" filter to limit sender addresses. If ommitted, anyone can send d258 1 a258 1 compatible reguar expression) for I. d260 1 a260 1 =item B<-n> I d263 1 a263 3 by uname(3). =item B<-o> I d265 3 d279 1 a279 1 connect but it's return codes are ignored. d281 1 a281 1 =item B<-r> I d283 4 a286 4 Restricted headers. Messages with a matching restrictheader are rejected. If ommitted no restrictions apply. Matching is done before -h headers are appended. Use a PCRE (Perl compatible reguar expression) for I. d288 1 a288 1 =item B<-s> I d292 37 a328 1 =item B<-t> I=I[,I=I[,...] d330 1 a330 5 Timeout for various actions. Possible names are C for any LMTP and C for any NNTP actions. More granular actions can be specified according to the following table, which also lists the system defaults. Setting sec to zero means to wait infinite. Note that LMTP timeouts only apply to socket operations, stdio always waits infinite. d332 1 a332 6 lmtp:accept = 0 lmtp:read = 10 lmtp:write = 10 nntp:connect = 360 nntp:read = 60 nntp:write = 60 d334 1 a334 1 =item B<-u> I d336 1 a336 1 UID or login name to resolve to a UID to be set for program execution. d338 1 a338 1 =item B<-v> d340 1 a340 1 Print version information. d342 2 a343 1 =item I [I ...] d345 4 a348 3 Newsgroup to post the message to or filter, depending on groupmode. Multiple groups can be specified. Crosspostings succeed if delivery to I group succeeds. @ 1.35 log @moved a paragraph; better description of acl @ text @d212 1 a212 2 Size limitation on message in bytes. Default is 8388608 (8M). Values below 64 are considered unacceptable small. @ 1.34 log @bump copyright year @ text @a74 6 =item B<-h> I
: Header with value to to be inserted into message before delivery. This option can be specified more than once. Useful for specifiying an moderator Email address to all outgoing news messages by applying an "Approved:" header. d109 5 a113 3 a client must match any inclusion and not match any exclusion. If you do not specify any inclusions a fake inclusion of 0.0.0.0/0 is appended internally. Any addr can be a name to be resolved first. d157 6 @ 1.33 log @added -r restrictheaders option @ text @d2 2 a3 2 ## Copyright (c) 2001 The OSSP Project ## Copyright (c) 2001 Cable & Wireless Deutschland @ 1.32 log @Applied Ralf's "Approved:" header patch but in a more general form which allows any kind and any number of headers to be inserted. @ text @d51 1 d200 7 @ 1.31 log @added -V veryverbose (unbuffered logging) option @ text @d46 1 d73 6 @ 1.30 log @documented -C childsmax option and -b path[:perms] @ text @d40 1 d93 4 d231 1 a231 1 Sending a USR1 signal to the program will flush the logging buffer. @ 1.29 log @added -u uid option @ text @d36 1 d41 1 a41 1 [B<-b> I[I<:port>]|C<->|I] d72 4 d106 1 a106 1 =item B<-b> I[I<:port>]|C<->|I (LMTP daemon bind) d109 4 a112 3 stdio, I for Unix Domain socket and I[I<:port>] for TCP INET socket. Omitting this option defaults to stdio. The path for a UNIX domain socket must start with a slash. The addr can be a name to be resolved first. @ 1.28 log @Sending a USR1 signal to the program will flush the logging buffer @ text @d50 1 d201 4 @ 1.27 log @document todays changes including option revamping @ text @d213 4 @ 1.26 log @Revamp command line options and their semantics (all daemons uppercase now, all address options [a-d], etc): o -D new option o -k -> -K o -p -> -P o -b -> -c o -a -> -b plus - o -a new option o -d -> -o o -h -> -d o -t name=value,... o -w removed @ text @d40 1 a40 1 [B<-b> C<->|I|I[I<:port>]] d70 1 a70 1 =item B<-b> C<->|I|I[I<:port>] (LMTP bind) d72 1 a72 3 Where to bind for incoming LMTP connections. Supported are "C<->" (stdin/stdout), I (for Unix Domain socket) and I[I<:port>] (for TCP Internet Domain socket). d74 1 a74 1 =item B<-c> I[I<:port>] d76 53 a128 20 Where to bind for outgoing NNTP connections. If an address is specified but port is omitted the kernel chooses an ephemeral port. If you want to specify a port but no address replace address with 0.0.0.0. If completely omitted, 0.0.0.0:0 is assumed which causes the kernel to choose an address based on routing information and an ephemeral port. =item B<-d> I Possible values for I are C, C or a string in "LLL/D.D.D" format used to fake a LMTP return code. In C mode articles are sent to the NNTP server(s) using POST command. Before posting, a duplicate check using STAT command is issued. In C mode articles are sent to the NNTP server(s) using IHAVE command. Specifying a return code and DSN replaces the post/ feed logic by a noop and assumes the given string must be returned to the LMTP side. The slash is replaced by a space internally. The default is "553/5.7.1" meaning "Requested action not taken: mailbox name not allowed/ Delivery not authorized, message refused". This is useful for debugging LMTP setups without engaging NNTP. Fake mode makes it possible to run without any B<-h> option. However, if B<-h> option is given the NNTP client tries to connect but it's return codes are ignored. d142 1 a142 1 =item B<-h> I[I<:port>][,I[I<:port>], ...] d144 10 a153 18 Hostname or address and optional TCP port of a NNTP service. Unless a port is specified, getserbyname(nntp) is queried with fallback to 119/tcp. If C<-h> option is ommited, the environment variable C is read, if this is undefined or empty C is used and if this doesn't resolve, C is assumed. This option can be specified more than once and it is possible to specify more than one host/ port per option as a comma-separated list. It is assumed that multiple servers are used to increase the reliability of the news system and to speed up distribution by posting the same article to more than one server. In regard to this program they must provide the same groups and talk to each other. =item B<-k> Kill the daemon. After processing the -k option the program is terminated so it renders most other options invalid not including -p and -l. The pid must be listed in pidfile using -p option. d166 1 a166 1 =item B<-p> I d168 12 a179 2 Pidfile to remember the process ID when -a option forces us to run as a daemon. Also to be used with -k. d186 1 a186 7 =item B<-t> I Timeout for the LMTP daemon managing alternate IO (see -a) to wait for input after having accepted a connection. Value is given in seconds, the default is three. Zero means to wait infinite. Use low numbers to prevend DoS attacks. =item B<-l> I[:I] d188 12 a199 10 The level measures the degree and importance of output and can be any of PANIC, CRITICAL, ERROR, WARNING, NOTICE, INFO, TRACE or DEBUG. The recommended level for daily operations is NOTICE. The default name for logfile is "logfile". This program is using the logging library (l2) which is currently under development. An early access snapshot with limited functionality has been included. Currently the common denominator of usage between lmtp2nntp and l2 is to use logging into a file only. Note that this will change soon as during integration of l2 into lmtp2nntp logging channels for local syslog and a SMTP client were already finished and IRC and NNTP clients are under development. a203 7 =item B<-w> I Specify the time the NNTP client waits for the initial connect to complete and the time to wait for every server's response. Value is given in seconds and must be greater than or equal to one second. The default is OS dependent for the connect and a three second timeout waiting for a server's response. @ 1.25 log @added -a altio, -p pidfile and -k kill options @ text @d36 7 a42 3 [B<-a> I] [B<-b> I[I<:port>]] [B<-d> I] d44 1 a44 2 [B<-h> I[I<:port>][,I[I<:port>], ...]] [B<-k>] d47 1 a47 1 [B<-p> I] d49 1 a49 2 [B<-t> I] [B<-l> I[:I]] a50 1 [B<-w> I] d70 1 a70 1 =item B<-a> I d72 3 a74 5 Alternate IO allows reading and writing from/to a UNIX domain or TCP sockets instead stdin/stdout. This places the program in daemon mode. The syntax for altio is either "unix:/path/to/socket" or "inet://address:port". If "unix:/" and "inet://" prefixes are ommited the program tries to guess the desired mode based on the existing of a leading slash. d76 1 a76 1 =item B<-b> I[I<:port>] d78 1 a78 1 Bind address and/or port to be used by the LMTP client. If an address is @ 1.24 log @-a option now supports both unix:/ and inet:// URLs. It tries to guess missing prefixes. @ text @d41 1 d44 1 d46 1 d69 8 d127 1 a127 1 =item B<-a> I d129 3 a131 5 Alternate IO allows reading and writing from/to a UNIX domain or TCP sockets instead stdin/stdout. This places the program in daemon mode. The syntax for altio is either "unix:/path/to/socket" or "inet://address:port". If "unix:/" and "inet://" prefixes are ommited the program tries to guess the desired mode based on the existing of a leading slash. d144 5 d154 6 d181 2 a182 2 must be greater than or equal to 1 second. The default is OS dependent for the connect and a 3 second timeout waiting for a server's response. @ 1.23 log @fix manpage @ text @d120 3 a122 1 altio is either "unix:/path/to/socket" or "inet://address:port". @ 1.22 log @flush daily work. First working daemon. Awful cleanup. @ text @d120 1 a120 1 altio is either "UNIX://path/to/socket" or "TCP://address:port". @ 1.21 log @revamping and polishing documentation files for release @ text @d36 1 d115 6 @ 1.20 log @updated documentation @ text @d31 1 a31 1 B - mail to news gateway d50 10 a59 7 The B program is a LMTP service which is usually invoked by a MTA. Input messages get their headers slightly reformatted to match network news article format. The article is then posted or fed into a NNTP service. Delivery must take place immediately or the transaction fails. A LMTP service relies on the queuing capabilities of its MTA. To support this, the program returns proper delivery status notification which indicates successful completed action, persistent transient failure or permanent failure. d61 1 a61 1 The following options are available: a162 23 =head1 SENDMAIL INTEGRATION t.virtusertable # mail to news gateway posting+*@@first.gateway.example %2@@lmtp2nntp t.mailertable # mail to news gateway lmtp2nntp lmtp2nntp:second.gateway.example sendmail.m4 dnl # Mailer: LMTP2NNTP (mail to news gateway) define(`LMTP2NNTP_MAILER_PATH', `confMYBINDIR/lmtp2nntp') define(`LMTP2NNTP_MAILER_MAX', `100000') define(`LMTP2NNTP_MAILER_DELIVERYMODE', `post') define(`LMTP2NNTP_MAILER_GROUPMODE', `envelope') define(`LMTP2NNTP_MAILER_ARGS', `-t confMYVARDIR/lmtp2nntp.log') define(`LMTP2NNTP_MAILER_GROUPS', `alt.test.\* alt.binaries.test') MAILER(lmtp2nntp) d165 3 a167 6 when invoked as LMTP server 0 = successful execution 1 = execution failed Returning proper delivery status notification is part of the LMTP protocol. a243 7 =head1 AUTHOR The OSSP Project Cable & Wireless Deutschland GmbH Thomas Lotterer a244 1 @ 1.19 log @fake mode now supports NTTP-less setups @ text @d36 1 a36 1 [B<-b> I[I<:port>] a47 3 B [B<-i> I] d128 13 a156 6 B =item B<-i> I Message id of MTA (for logging purposes only). @ 1.18 log @The -b option now works. L2 logging included. @ text @d75 12 a86 10 Possible values for I are C, C or a string used to fake a LMTP return code and DSN in "LLL/D.D.D" format. The slash is replaced by a space internally. The default is "553/5.7.1" meaning "Requested action not taken: mailbox name not allowed/ Delivery not authorized, message refused". In C mode articles are sent to the NNTP server(s) using POST command. Before posting, a duplicate check using STAT command is issued. In C mode articles are sent to the NNTP server(s) using IHAVE command. Specifying a return code/ DSN replaces the post/ feed logic by a noop and assumes the given string must be returned to the LMTP side. This is useful for debugging LMTP setups without engaging NNTP. @ 1.17 log @flush pending (unfinished) work. @ text @a35 1 [B<-V>] d43 1 a43 1 [B<-t> I] a49 1 [B<-l> I] a64 4 =item B<-V> Print version information. a128 5 =item B<-t> I Enable LMTP and NNTP protocol tracing into tracefile. When using C these messages are logged with C level. d131 1 a131 2 Enable verbose processing messages in logfile. When using C these messages are logged with C level. a147 4 =item B<-o> I Outgoing network IP address or hostname to bind to. a150 24 =item B<-p> I Incoming protocol. Default is C which means B reads the incoming mail from F in RFC822 message format and reports errors to F. Alternatively if I is C, B speaks Local Mail Transport Protocol (LMTP) according to RFC 2033 on F/F. =item B<-l> C =item B<-l> C[C<:>I] =item B<-l> CI Logging target. This option can be specified more than once. Default is no logging. Default I for C is C. =item B<-L> I Logging level. Default is C. Possible levels from highest priority with least output to lowest priority with most most outpout are C, C, C, C, C, C, C, C where the chosen level includes all levels with higher priority. @ 1.16 log @flush pending (unfinished) work. @ text @d181 1 d184 7 @ 1.15 log @Finally apply GNU General Public License (GPL) to OSSP lmtp2nntp. @ text @d37 1 d41 3 a43 2 [B<-m> I] [B<-n> I] a49 1 [B<-b> I] d71 8 d119 1 a119 1 =item B<-m> I d121 3 a123 2 Maximum message size in bytes. Default is 8388608 (8M). Values below 64 are considered unacceptable small. d129 5 @ 1.14 log @tried to add -b option w/o success. Binding to a given port, which should only be a side effect anyway) works but binding to given address currently fails for unknown reason. @ text @d1 25 @ 1.13 log @updated and reformatted manpage @ text @d23 1 a23 1 [B<-o> I] @ 1.12 log @implemented and documented [-w waittime] option including nonblocking connect @ text @a127 4 =item B<-t> I LMTP and NNTP protocol timeouts (in seconds). d182 1 a182 1 =item RFC0821 Simple Mail Transfer Protocol. d184 3 a186 2 J. Postel. Aug-01-1982. (Format: TXT=124482 bytes) (Obsoletes RFC0788 ) (Obsoleted by RFC2821) (Also STD0010) (Status: STANDARD ) d188 1 a188 1 =item RFC0822 Standard for the format of ARPA Internet text messages. d190 4 a193 3 D. Crocker. Aug-13-1982. (Format: TXT=109200 bytes) (Obsoletes RFC0733) (Obsoleted by RFC2822) (Updated by RFC1123, RFC1138, RFC1148, RFC1327, RFC2156) (Also STD0011) (Status: STANDARD) d195 1 a195 1 =item RFC0977 Network News Transfer Protocol. d197 2 a198 2 B. Kantor, P. Lapsley. Feb-01-1986. (Format: TXT=55062 bytes) (Status: PROPOSED STANDARD) d200 1 a200 1 =item RFC1035 Domain names - implementation and specification. d202 5 a206 4 P.V. Mockapetris. Nov-01-1987. (Format: TXT=125626 bytes) (Obsoletes RFC0973, RFC0882, RFC0883) (Updated by RFC1101, RFC1183, RFC1348, RFC1876, RFC1982, RFC1995, RFC1996, RFC2065, RFC2136, RFC2181, RFC2137, RFC2308, RFC2535, RFC2845) (Also STD0013) (Status: STANDARD) d208 1 a208 1 =item RFC1652 SMTP Service Extension for 8bit-MIMEtransport. d210 3 a212 2 J. Klensin, N. Freed, M. Rose, E. Stefferud, D. Crocker. July 1994. (Format: TXT=11842 bytes) (Obsoletes RFC1426) (Status: DRAFT STANDARD) d214 1 a214 1 =item RFC1854 SMTP Service Extension for Command Pipelining. d216 2 a217 2 N. Freed. October 1995. (Format: TXT=14097 bytes) (Obsoleted by RFC2197) (Status: PROPOSED STANDARD) d219 1 a219 1 =item RFC1893 Enhanced Mail System Status Codes. d221 2 a222 2 G. Vaudreuil. January 1996. (Format: TXT=28218 bytes) (Status: PROPOSED STANDARD) d224 1 a224 1 =item RFC1894 An Extensible Message Format for Delivery Status Notifications. d226 3 a228 2 K. Moore, G. Vaudreuil. January 1996. (Format: TXT=77462 bytes) (Updated by RFC2852) (Status: PROPOSED STANDARD) d230 1 a230 1 =item RFC2034 SMTP Service Extension for Returning Enhanced Error Codes. d232 2 a233 2 N. Freed. October 1996. (Format: TXT=10460 bytes) (Status: PROPOSED STANDARD) d235 1 a235 1 =item RFC2606 Reserved Top Level DNS Names. d237 2 a238 2 D. Eastlake, A. Panitz. June 1999. (Format: TXT=8008 bytes) (Also BCP0032) (Status: BEST CURRENT PRACTICE) d240 1 a240 1 =item RFC2821 Simple Mail Transfer Protocol. d242 3 a244 1 J. Klensin, Editor. April 2001. (Format: TXT=192504 bytes) (Obsoletes RFC0821, RFC0974, RFC1869) (Status: PROPOSED STANDARD) d246 1 a246 1 =item RFC2980 Common NNTP Extensions. d248 2 a249 2 S. Barber. October 2000. (Format: TXT=57165 bytes) (Status: INFORMATIONAL) @ 1.11 log @implemented and documented [-n hostname] option @ text @d19 1 d21 1 a24 1 [B<-T> I] d104 7 @ 1.10 log @updated documentation @ text @d16 1 a21 1 [B<-j> I] d69 1 a69 1 =item [B<-h> I[I<:port>][,I[I<:port>], ...]] d84 1 a84 1 =item [B<-m> I] d89 5 a114 4 =item B<-j> I Own FQDN used in LMTP and NNTP protocols. @ 1.9 log @added -m maxmessagesize option @ text @d11 1 d14 1 a14 1 [B<-h> I[I<:port>]] d18 1 a18 1 [B<-V>] a25 1 d40 1 a40 13 =item B<-o> I Outgoing network IP address or hostname to bind to. =item B<-j> I Own FQDN used in LMTP and NNTP protocols. =item B<-i> I Message id of MTA (for logging purposes only). =item B<-t> I d42 1 a42 35 LMTP and NNTP protocol timeouts (in seconds). =item [B<-m> I] Maximum message size in bytes. Default is 8388608 (8M). Values below 64 are considered unacceptable small. =item B<-p> I Incoming protocol. Default is C which means B reads the incoming mail from F in RFC822 message format and reports errors to F. Alternatively if I is C, B speaks Local Mail Transport Protocol (LMTP) according to RFC 2033 on F/F. =item B<-l> C =item B<-l> C[C<:>I] =item B<-l> CI Logging target. This option can be specified more than once. Default is no logging. Default I for C is C. =item B<-h> I[:] Hostname or address and optional TCP port of a NNTP service. Unless a port is specified, getserbyname(nntp) is queried with fallback to 119/tcp. If C<-h> option is ommited, the environment variable C is read, if this is undefined or empty C is used and if this doesn't resolve, C is assumed. This option can be specified more than once. It is assumed that multiple servers are used to increase the reliability of the news system and to speed up distribution by posting the same article to more than one server. In regard to this program they must provide the same groups and talk to each other. d62 26 a87 6 envelope are ignored. In C mode the newsgroup(s) are taken from the LMTP envelope, in C
mode the newsgroup(s) are taken from the header. In all modes C header is rewritten. In C and C
mode groups must still be specified as command line arguments. However, in these modes the command line arguments are filters representing allowed groups. Filters can be specified as wildmat's. d99 5 a103 1 =item I d105 33 a137 2 Newsgroup to post the message to. Multiple groups can be specified. Crosspostings only succeed if delivery to I groups succeed. d146 1 a146 1 posting+*@@mail.de.cw.net %2@@lmtp2nntp d151 1 a151 1 lmtp2nntp lmtp2nntp:visp.engelschall.com d161 1 a161 1 define(`LMTP2NNTP_MAILER_GROUPS', `cw.\* en.\*') d164 17 a180 1 =head1 EXAMPLE d182 1 a182 1 $ cat rfc822.message | lmtp2nntp -l /tmp/log -v -h mynews foo.bar d184 3 a186 3 reads rfc822.message and posts it into group "foo.bar" using NNTP service on host "mynews". Activity is logged to /tmp/log. If posting is successful, the exit status is 0. d188 1 a188 1 $ cat rfc822.message | lmtp2nntp -h news1 -h news2 -h news3 foo.bar d190 2 a191 3 reads rfc822.message and posts it into group "foo.bar" using NNTP service on all hosts "news1", "news2" and "news3". Activtiy is not logged. If at least one posting is successful, the exit status is 0. d193 1 a193 1 $ cat rfc822.message | lmtp2nntp -l stderr foo.bar quux.bar test.bar d195 4 a198 4 reads rfc822.message and posts it into groups "foo.bar", "quux.bar" and "test.bar" using NNTP service on host C<${NNTPSERVER:-news}>. Activity is logged to stderr. Only if all three crosspostings succeed, the exit status is 0. d200 21 a220 1 =head1 DIAGNOSTICS d222 2 a223 1 when invoked from command line d225 1 a225 3 0 = successful execution and delivery 1 = execution failed 2 = cannot deliver to any nntpserver d227 2 a228 1 when invoked as LMTP server d230 1 a230 2 0 = successful execution 1 = execution failed d232 1 a232 1 delivery status is part of the LMTP protocol d234 1 a234 1 =head1 STANDARDS d236 2 a237 44 0821 Simple Mail Transfer Protocol. J. Postel. Aug-01-1982. (Format: TXT=124482 bytes) (Obsoletes RFC0788) (Obsoleted by RFC2821) (Also STD0010) (Status: STANDARD) 0822 Standard for the format of ARPA Internet text messages. D. Crocker. Aug-13-1982. (Format: TXT=109200 bytes) (Obsoletes RFC0733) (Obsoleted by RFC2822) (Updated by RFC1123, RFC1138, RFC1148, RFC1327, RFC2156) (Also STD0011) (Status: STANDARD) 0977 Network News Transfer Protocol. B. Kantor, P. Lapsley. Feb-01-1986. (Format: TXT=55062 bytes) (Status: PROPOSED STANDARD) 1035 Domain names - implementation and specification. P.V. Mockapetris. Nov-01-1987. (Format: TXT=125626 bytes) (Obsoletes RFC0973, RFC0882, RFC0883) (Updated by RFC1101, RFC1183, RFC1348, RFC1876, RFC1982, RFC1995, RFC1996, RFC2065, RFC2136, RFC2181, RFC2137, RFC2308, RFC2535, RFC2845) (Also STD0013) (Status: STANDARD) 1652 SMTP Service Extension for 8bit-MIMEtransport. J. Klensin, N. Freed, M. Rose, E. Stefferud, D. Crocker. July 1994. (Format: TXT=11842 bytes) (Obsoletes RFC1426) (Status: DRAFT STANDARD) 1854 SMTP Service Extension for Command Pipelining. N. Freed. October 1995. (Format: TXT=14097 bytes) (Obsoleted by RFC2197) (Status: PROPOSED STANDARD) 1893 Enhanced Mail System Status Codes. G. Vaudreuil. January 1996. (Format: TXT=28218 bytes) (Status: PROPOSED STANDARD) 1894 An Extensible Message Format for Delivery Status Notifications. K. Moore, G. Vaudreuil. January 1996. (Format: TXT=77462 bytes) (Updated by RFC2852) (Status: PROPOSED STANDARD) 2034 SMTP Service Extension for Returning Enhanced Error Codes. N. Freed. October 1996. (Format: TXT=10460 bytes) (Status: PROPOSED STANDARD) 2606 Reserved Top Level DNS Names. D. Eastlake, A. Panitz. June 1999. (Format: TXT=8008 bytes) (Also BCP0032) (Status: BEST CURRENT PRACTICE) 2821 Simple Mail Transfer Protocol. J. Klensin, Editor. April 2001. (Format: TXT=192504 bytes) (Obsoletes RFC0821, RFC0974, RFC1869) (Status: PROPOSED STANDARD) d239 1 a239 2 2980 Common NNTP Extensions. S. Barber. October 2000. (Format: TXT=57165 bytes) (Status: INFORMATIONAL) @ 1.8 log @option -h now understands multiple hosts as comma separated list; .cvsignore test/dmalloc.log; program is now called "mail to news gateway" consequently - including case; parts of usage() and .pod can now be created from source; test suite and 00TODO updated; @ text @d14 1 a17 1 I [I ...] d56 5 d134 20 a153 1 Mlmtp2nntp, P=/... /*FIXME*/ @ 1.7 log @rewrote DESCRIPTION; added RFCs to STANDARD section; @ text @d6 1 a6 1 B - mail to nntp gateway d10 9 a18 1 B d22 1 a22 2 [B<-t> I] [B<-p> I] d24 1 a24 7 [B<-h> I[I<:port>]] [B<-d> I] [B<-g> I] [B<-t> I] [B<-v>] I [I ...] d205 4 @ 1.6 log @INN kludge, IHAVE feeding, -d deliverymode command line option, DEFER handing @ text @d27 7 a33 3 The B program reads mail from stdin and posts it to one or more newsgroups using NNTP. It delivers the message immediately or fails. If queuing is desired it can operate as a LMTP server. d168 43 a210 2 RFC1891 Delivery Status Notification (DSN) FIXME d220 1 @ 1.5 log @cleanup msg.[ch], moved tracing to trace.[ch], added target to Makefile, added -t switch in lmtp2nntp.[c|pod], incorporated tracing into lmtp.[ch] and nntp.[ch], run.sh now using new tracing option @ text @d18 1 d79 13 @ 1.4 log @lmtp/nntp joined at command args and lhlo @ text @d19 1 a19 1 [B<-t>] d91 1 a91 1 =item B<-t> d93 2 a94 2 Enable LMTP protocol tracing in logfile. When using C these messages are logged with C level. @ 1.3 log @no more dummy-OKs on the lmtp side, some first steps on the nntp side @ text @a17 1 [B<-d> I] d68 10 a77 17 Hostname or address and optional TCP port of a NNTP service. Unless a port is specified, getserbyname(nntp) is queried with fallback to 119/tcp. If C<-h> option is ommited, the environment variable C is read, if this is undefined or empty C is used and if this doesn't resolve, C is assumed. This option can be specified more than once. The program connects to the services in given order. =item B<-d> I Possible values for I are C (default), C and C. This option is only useful when multiple NNTP servers are given. In C mode, the program posts to as many servers as it can. Sucessfully posting the message one or more times returns success. In I mode it stops processing immediately after the first successful delivery and returns success. In I mode successful posting to all newservers is required to return successful. @ 1.2 log @first time working with sendmail @ text @d18 2 a19 1 [B<-m> I] d77 1 a77 1 =item B<-m> I d79 19 a97 5 Mode of delivery. Possible values for I are C (default) and C. If multiple NNTP servers are given and running in C mode, it posts to as many servers as it can. Sucessfully posting the message one or more times returns success. In I mode it stops processing immediately after the first successful delivery and returns success. @ 1.1 log @ralf s. engelschall first api draft @ text @d11 4 d34 16 d140 5 @