head 1.65; access; symbols LMTP2NNTP_1_4_1:1.65 LMTP2NNTP_1_4_0:1.65 LMTP2NNTP_1_3_0:1.65 LMTP2NNTP_1_3b2:1.65 LMTP2NNTP_1_3b1:1.65 LMTP2NNTP_1_3a3:1.65 LMTP2NNTP_1_3a2:1.65 LMTP2NNTP_1_3a1:1.65 LMTP2NNTP_1_2_0:1.65 LMTP2NNTP_1_2b4:1.65 LMTP2NNTP_1_2b3:1.65 LMTP2NNTP_1_2b2:1.65 LMTP2NNTP_1_2b1:1.64 LMTP2NNTP_1_2a8:1.64 LMTP2NNTP_1_2a7:1.64 LMTP2NNTP_1_2a6:1.61 LMTP2NNTP_1_2a5:1.60 LMTP2NNTP_1_2a4:1.57 LMTP2NNTP_1_2a3:1.56 SOURCE_RESTRUCTURING_AFTER:1.48 SOURCE_RESTRUCTURING_BEFORE:1.48 LMTP2NNTP_1_2a1:1.48 LMTP2NNTP_1_1_1:1.47 LMTP2NNTP_1_1_0:1.46 LMTP2NNTP_1_1b4:1.46 LMTP2NNTP_1_1b3:1.46 LMTP2NNTP_1_1b2:1.44 LMTP2NNTP_1_1b1:1.41 LMTP2NNTP_1_0_0:1.37 LMTP2NNTP_0_9_7:1.36 LMTP2NNTP_0_9_6:1.36 LMTP2NNTP_0_9_5:1.36 LMTP2NNTP_0_9_4:1.24 LMTP2NNTP_0_9_3:1.20 LMTP2NNTP_0_9_2:1.15 LMTP2NNTP_0_9_1:1.13 LMTP2NNTP_0_9_0:1.11 genesis:1.1.1.1 thl:1.1.1; locks; strict; comment @# @; 1.65 date 2003.02.10.12.46.53; author thl; state Exp; branches; next 1.64; 1.64 date 2003.01.30.19.42.12; author rse; state Exp; branches; next 1.63; 1.63 date 2003.01.30.19.27.28; author rse; state Exp; branches; next 1.62; 1.62 date 2003.01.30.19.18.57; author rse; state Exp; branches; next 1.61; 1.61 date 2002.07.29.11.39.43; author thl; state Exp; branches; next 1.60; 1.60 date 2002.05.28.12.19.47; author thl; state Exp; branches; next 1.59; 1.59 date 2002.05.23.05.52.53; author thl; state Exp; branches; next 1.58; 1.58 date 2002.04.18.13.28.30; author thl; state Exp; branches; next 1.57; 1.57 date 2002.03.05.14.49.41; author thl; state Exp; branches; next 1.56; 1.56 date 2002.03.04.15.54.28; author thl; state Exp; branches; next 1.55; 1.55 date 2002.02.13.16.25.38; author thl; state Exp; branches; next 1.54; 1.54 date 2002.02.13.13.46.58; author thl; state Exp; branches; next 1.53; 1.53 date 2002.02.07.12.54.04; author thl; state Exp; branches; next 1.52; 1.52 date 2002.01.31.09.48.25; author thl; state Exp; branches; next 1.51; 1.51 date 2002.01.31.09.47.32; author thl; state Exp; branches; next 1.50; 1.50 date 2002.01.31.09.32.32; author thl; state Exp; branches; next 1.49; 1.49 date 2001.12.31.11.30.17; author thl; state Exp; branches; next 1.48; 1.48 date 2001.11.15.09.57.40; author thl; state Exp; branches; next 1.47; 1.47 date 2001.11.14.13.55.45; author thl; state Exp; branches; next 1.46; 1.46 date 2001.10.31.08.24.10; author thl; state Exp; branches; next 1.45; 1.45 date 2001.10.31.08.08.28; author thl; state Exp; branches; next 1.44; 1.44 date 2001.10.15.14.32.32; author thl; state Exp; branches; next 1.43; 1.43 date 2001.10.15.12.48.57; author thl; state Exp; branches; next 1.42; 1.42 date 2001.10.15.11.32.07; author thl; state Exp; branches; next 1.41; 1.41 date 2001.10.12.12.52.35; author rse; state Exp; branches; next 1.40; 1.40 date 2001.10.12.12.34.14; author thl; state Exp; branches; next 1.39; 1.39 date 2001.10.12.10.25.35; author rse; state Exp; branches; next 1.38; 1.38 date 2001.10.12.10.08.57; author rse; state Exp; branches; next 1.37; 1.37 date 2001.09.13.14.24.49; author thl; state Exp; branches; next 1.36; 1.36 date 2001.09.12.09.58.22; author thl; state Exp; branches; next 1.35; 1.35 date 2001.09.12.08.18.58; author thl; state Exp; branches; next 1.34; 1.34 date 2001.09.11.13.41.22; author thl; state Exp; branches; next 1.33; 1.33 date 2001.09.11.06.43.13; author thl; state Exp; branches; next 1.32; 1.32 date 2001.09.11.06.41.59; author thl; state Exp; branches; next 1.31; 1.31 date 2001.09.10.12.50.35; author thl; state Exp; branches; next 1.30; 1.30 date 2001.09.10.11.19.05; author thl; state Exp; branches; next 1.29; 1.29 date 2001.09.10.10.16.05; author thl; state Exp; branches; next 1.28; 1.28 date 2001.09.10.06.50.56; author thl; state Exp; branches; next 1.27; 1.27 date 2001.09.07.13.53.16; author thl; state Exp; branches; next 1.26; 1.26 date 2001.09.05.09.14.26; author thl; state Exp; branches; next 1.25; 1.25 date 2001.09.03.15.06.29; author thl; state Exp; branches; next 1.24; 1.24 date 2001.08.30.13.38.04; author thl; state Exp; branches; next 1.23; 1.23 date 2001.08.30.08.58.19; author thl; state Exp; branches; next 1.22; 1.22 date 2001.08.30.08.35.44; author thl; state Exp; branches; next 1.21; 1.21 date 2001.08.29.14.58.21; author thl; state Exp; branches; next 1.20; 1.20 date 2001.08.28.14.27.35; author thl; state Exp; branches; next 1.19; 1.19 date 2001.08.28.13.12.58; author thl; state Exp; branches; next 1.18; 1.18 date 2001.08.28.11.31.22; author thl; state Exp; branches; next 1.17; 1.17 date 2001.08.27.14.29.11; author thl; state Exp; branches; next 1.16; 1.16 date 2001.08.27.13.45.53; author thl; state Exp; branches; next 1.15; 1.15 date 2001.08.23.08.18.26; author rse; state Exp; branches; next 1.14; 1.14 date 2001.08.23.07.57.08; author thl; state Exp; branches; next 1.13; 1.13 date 2001.08.20.14.11.30; author thl; state Exp; branches; next 1.12; 1.12 date 2001.08.20.13.02.35; author thl; state Exp; branches; next 1.11; 1.11 date 2001.08.20.10.02.44; author rse; state Exp; branches; next 1.10; 1.10 date 2001.08.16.15.00.50; author thl; state Exp; branches; next 1.9; 1.9 date 2001.08.07.09.05.06; author thl; state Exp; branches; next 1.8; 1.8 date 2001.08.07.06.41.59; author thl; state Exp; branches; next 1.7; 1.7 date 2001.08.02.14.57.43; author thl; state Exp; branches; next 1.6; 1.6 date 2001.08.01.07.05.50; author thl; state Exp; branches; next 1.5; 1.5 date 2001.07.25.11.29.38; author thl; state Exp; branches; next 1.4; 1.4 date 2001.07.24.11.32.06; author thl; state Exp; branches; next 1.3; 1.3 date 2001.07.23.12.14.06; author thl; state Exp; branches; next 1.2; 1.2 date 2001.07.17.12.40.06; author thl; state Exp; branches; next 1.1; 1.1 date 2001.07.16.12.12.21; author thl; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2001.07.16.12.12.21; author thl; state Exp; branches; next ; desc @@ 1.65 log @remember possible performance issue @ text @ _ ___ ____ ____ ____ _ _ ___ _ |_|_ _ / _ \/ ___/ ___|| _ \ | |_ _ __ | |_ _ __|__ \ _ _ _ _ | |_ _ __ _|_||_|| | | \___ \___ \| |_) || | ' ` \| __| '_ \ _) | ' \| ' \| __| '_ \ |_||_|_|| |_| |___) |__) | __/ | | || || | |_| |_) / _/| || | || | |_| |_) | |_|_|_| \___/|____/____/|_| |_|_||_||_|\__| .__/____|_||_|_||_|\__| .__/ |_| |_| OSSP lmtp2nntp - Mail to News Gateway TODO before release, check for - FIXME - strdup - check printf/log for consistent look'n'feel and uniqness - check printf/log for consistent usage of strerr()/XXX_error() FIXMEs must be resolved to create a release. TODOs are deferred for later releases. There're usually functional enhancements, performance improvements, rewrites, integration of external libraries ... according to "purify" lmtp2nntp spends 23% of its time in msg_split() This is the one to optimize first if perfomance becomes an issue move as much as possible from lmtp2nntp_common.h into local source contexts. should we resolv on startup only or for every access or using dns ttl add --define foo:bar option allowing the user to specify arbitrary variables which can then be used as ${option.define}[x] when you know x expanding to 'foo:bar' or be used as ${define.foo} and expanding to 'bar'. newsserver fallback: when a server does not respond, mark it "disabled" for a specified time. Until the time is expired, ignore this server. However, if all others fail, ignore the timestamp. use sa_buffer (where sa_timeout is called) on waiting for childs to finish: maximum number of seconds to wait at all and if childs still are running, kill them. This means we have to remember pid_t's. add a %dumpvars function to the header rewrite engine LMTP and NNTP logging by passing the l2 context into their structures. Proper cleanup when exiting through signals. make msg.c a library with functions to add/ remove headers. add artifical delay for error respones to defeat DoS attacks. the name of the variable "errorstring" is confusing since it is used for other strings as well, see processing of -r option Lawrence Greenfield inn permissions require "read" for a STAT, so a "post w/o stat" delivery mode should be implemented. **** DEVELOPMENT INFORMATION **** Debugging: $ ./.configure [wegen --with-dmalloc!] $ dmalloc -l dmalloc.log $ dmalloc debug3 **** DEVELOPMENT INFORMATION **** I want to ask how cross posting to multiple lists are handled. For example: User posts to the following two lists which are both mail to news gateways: listone@@lists.org -> lists.listsone listtwo@@lists.org -> lists.listtwo Obviously both messages will have an identical Message-ID header of which nntp will reject one of the two posts. Ideally this would be caught and the message would be cross posted to both lists.listsone and lists.listtwo groups. Proposal for using -h Newsgroups:${To:s/SEARCH/REPLACE/} with SEARCH/REPLACE being the following regex: perl -e '$_="foo\@@bar\nFoo Bar \nfoo\@@bar (Foo Bar)\n Foo Bar\n(Foo Bar) foo\@@bar\n"; foreach $a (split(/\n/, $_)) { $n=$a; $n=~s/^(?:([^@@<>()]+)@@[^<>()]+|.*<([^@@]+)@@[^>]+?>.*|.*?([^@@ <>()]+)@@[^ <>()]+.*)$/$1$2$3/; print "$a->$n\n" };' empty Subject: headers can be handled by -h Subject:${Subject:-empty} missing Message-Id: headers can be handeld by -h Message-Id:${Message-Id:-$_CreateMessageId} illegal Message-Id: two or more @@ use -h ${Message-Id:s/^.*@@.*@@.*$/$_CreateMesssageId/} illegal Message-Id: no @@ use -h ${Message-Id:s/^[^@@]*$/$_CreateMesssageId/} crossposting problem -h [Newsgroups:see perl example above and use feature 2.)\n] potential to merge post/header modes -h [Newsgroups:${_EnvelopeRCPT}\n] consider using lib_cfg for configuration file parsing @ 1.64 log @Apply the standard OSSP copyright header, document ASCII art and fix URL to lmtp2nntp homepage. @ text @d22 3 @ 1.63 log @Implement the decision from yesterday evening and finally rename fixme.h to lmtp2nntp_common.h because there is little chance this this stuff ever can be moved into more local source contexts. @ text @d1 9 @ 1.62 log @Fix a big security hole: the l2_spec() is a varargs function which gets a format string and variable arguments. In case only a fixed string is used we have to use "%s" as the format string or else "%x" in the string is treated like a formatter (and hence cause a segfault or whatever else if it tries to fetch args from the stack). This especially also no longer requires the formatting constricts to be written %%X... @ text @d13 2 @ 1.61 log @security issue; lib_cfg consideration @ text @d79 1 a79 22 =================================================================== RCS file: /e/ossp/cvs/ossp-pkg/fsl/fsl.c,v retrieving revision 1.22 retrieving revision 1.21 diff -r1.22 -r1.21 341c341 < if ((l2rv = l2_spec(&ch, ctx.l2_fslenv, "%s", argl2spec)) != L2_OK) { --- > if ((l2rv = l2_spec(&ch, ctx.l2_fslenv, argl2spec)) != L2_OK) { 513c513 < if ((l2rv = l2_spec(&ch, ctx.l2_env, "%s", argl2spec)) != L2_OK) { --- > if ((l2rv = l2_spec(&ch, ctx.l2_env, argl2spec)) != L2_OK) { Fix a big security hole: the l2_spec() is a varargs function which gets a format string and variable arguments. In case only a fixed string is used we have to use "%s" as the format string or else "%x" in the string is treated like a formatter (and hence cause a segfault or whatever else if it tries to fetch args from the stack). This especially also no longer requires the formatters to be written %%X... consider using lib_cfg for configuration file parsing @ 1.60 log @disable debug code blocks; request to enhance l2; FIXME/TODO statement @ text @d78 24 @ 1.59 log @do not forget @ text @d8 5 @ 1.58 log @update @ text @d24 2 @ 1.57 log @remember new idea @ text @a3 1 - foo a6 1 -------------------------------------------------------------------------------- d8 1 a8 7 o split already too large lmtp2nntp_main.c into smaller chunks (3-4 files) o move already too complex and intermixed option parsing and processing into two parts (1: parsing, 2: processing) o use dotconf library to provide a configuration file o use var library to provide variable expansion everywhere -------------------------------------------------------------------------------- a19 4 option -U currently has to be specified before option -b in order to set the owner/modes of Unix Domains sockets correctly. To fix this, the wholly option handling has to be revamped. a27 4 move code out of getopt()-loop split already too large lmtp2nntp.c source into smaller pieces (~ 10-30KB each only) a38 2 handle duplicate headers, i.e. Reply-To: a40 6 Proposal for future URL-style logging option syntax -L streamlog -l syslog:[mask]//[localhost[:port]][/tag=value ...] with /tag=value i.e. facility=local0 -l smtp:[mask]//[localhost[:port]][/tag=value ...] with /tag=value i.e. to=foo@@example.com -l file:[mask]//path/file d63 1 a63 8 1.) OSSP var needs autoconf environment 2.) OSSP var needs RPM-style [] multivalue expansion 3.) include OSSP var 4.) splitting headers needs to extend known headers into multiple instances 5.) joining headers needs to merge known headers into single instances, delete headers w/o value 6.) add -f configfile option in a mini-library #comments, command[\svalue] Result is: duplicate Reply-To: headers are eleminated by 5.) a69 30 **** DETAILS **** create an array with columns for "header" and every value, index is "header"; -h [pri]:[regex]:header:[val] foreach rule { if (rule has regex) { foreach header { if (regex matches) { createheader substitutevalue writeheader(overwrite_if_existing) } } } else { /* rule has no regex */ createheader substitutevalue writeheader(overwrite_if_existing) } } @ 1.56 log @Integration done replacing headervalue with new headerrule stuff. This version is v1.2a3 and runs live on visp.engelschall.com @ text @d18 4 @ 1.55 log @new -h option and config @ text @a103 18 # merge values from duplicate headers and separte them with "comma space" -h :(Reply-To|To|Cc|Bcc):$0: [%{$0[#]}%{$0[#+1]:+, }] # keep only first value from duplicate headers -h :(X-Firstonly):$0: %{$0[0]} # replace empty Subject with text "None" -h :Subject: %{$Subject:-None} # create Message-ID if omitted or illegal (<> single @@) -h :Messageid: %{messagid:s/^([^@@+@@[^@@]+)$/<$1/:s/^[^<].*$/%{tool.createmessageid}/} # append a header -h ::X-Append: Tail # remove a header (empty value) -h ::X-Delete: @ 1.54 log @brainstorming @ text @d102 1 a102 1 -h [priority]:[regex]:header:[value] @ 1.53 log @remember issue regarding newsserver fallback @ text @d98 48 @ 1.52 log @don't forget @ text @d18 4 @ 1.51 log @don't forget @ text @d6 1 a6 1 - check printf/log for consistent look and feel @ 1.50 log @don't forget @ text @d6 2 @ 1.49 log @TODO list for Thomas ;) @ text @d2 6 @ 1.48 log @OSSP var a little extended can solve issues very elegant @ text @d2 8 @ 1.47 log @duplicate header issue repored by rse@@de.cw.net and ricudis@@paiko.gr @ text @d45 33 @ 1.46 log @feature request: post w/o stat @ text @d31 2 @ 1.45 log @need a plain english description @ text @d27 4 @ 1.44 log @remember fine tuning @ text @d2 2 @ 1.43 log @Remember text from last NNTP error message and pass it back to LMTP @ text @d22 3 @ 1.42 log @make sure almshouse does not get boring @ text @a13 2 Remember text from last NNTP error message and pass it back to LMTP. @ 1.41 log @remember issues @ text @d20 4 @ 1.40 log @remember some things in TODO @ text @d16 4 @ 1.39 log @Implement -C option (maximum number of childs). @ text @d2 11 a12 1 **** DEVELOPMENT INFORMATION **** d14 1 a14 2 option -U currently has to be specified before option -b in order to set the owner/modes of Unix Domains sockets correctly. d16 1 a16 2 on waiting for childs to finish: maximum number of seconds to wait at all and if childs still are running, kill them (-> we have to remember pid_t's) @ 1.38 log @Improve -u option and -b (uid/mode on Unix Domain sockets). @ text @d7 3 @ 1.37 log @even more polishing for release @ text @d4 3 @ 1.36 log @now handling signals @ text @d2 1 a2 3 - improve sendmail.m4 templates **** DEVELOPMENT INFORMATION **** @ 1.35 log @added ability to log nothing by creating/ configuring/ stacking zero channels @ text @a1 2 - FIXME - signal handler to catch EINTR and segfaults @ 1.34 log @msg.c is now l2 enabled; improved logging using foreign (aka sendmail queuing) id; now calculating and logging message size; @ text @a3 2 - check gcc3 compatiblity - how to log nothing a4 1 - l2 date format should be same as syslog d6 4 a12 3 -L streamlog **** DEVELOPMENT INFORMATION **** @ 1.33 log @added/ updated GNU style information files @ text @a1 3 - [B<-i> I] - CU/CUS - str debugging d6 2 d9 2 a10 2 -l syslog:[mask]//[localhost[:port]][/facility] -l smtp:[mask]//[localhost[:port]][/tag:value ...] a12 1 @ 1.32 log @RFC1891 ENVID, 6.2 is not the way to go findind out the queue-ID from sendmail. It is a information stored in the message envelope and received and forwarded by sendmail but it has no relationship to the queue-ID. @ text @d2 12 a13 6 panic = unexpected error = i/o error, errno ... warning = NNTP connect failed info = *MOST COMMON* step by step trace = ist bisheriger trace.c debug = developer meldungen a14 24 NOTICE = startup/ statistics/ shutdown ERROR = reject nur bei DEBUG die function names verwenden README Changelog - via cvs2cl - ask RSE for apache-style NEWS AUTHORS THANKS - contributors [B<-i> I] CU/CUS str debugging FIXME - -l error:syslog[:facility] - -l error:smtp://host[:port][/postmaster@@mail.de.cw.net] - -l debug:file:/path - -L warning check gcc3 compatiblity @ 1.31 log @request to support SMTP and SYSLOG logging in addition to FILE @ text @d19 1 a19 1 [B<-i> I] use L2 for logging, grab ID through RFC1891 ENVID, 6.2 @ 1.30 log @input from team meeting @ text @d27 5 @ 1.29 log @add library version checks (compile-time and run-time) @ text @d9 10 @ 1.28 log @added -m mailfrom filter @ text @a16 6 check str library version - openpkg (package time) - autoconf, (autoconf time) - str.h, #err (compile time) - STR_VERSION (run time) @ 1.27 log @The -b option now works. L2 logging included. @ text @a1 2 whatsup draufleiten d9 1 a9 10 Hallo Thomas, wir haben festgestellt, dass wir noch ein feature brauchen. Momentan waere es moeglich, dass jeder x-beliebige (der die entsprechende Mail-Adresse kennt) eine Mail an mail.de.cw.net schickt, und diese somit auf unsern News-Server abgebildet wird. Wir brauchen daher noch einen Filter, der dies pro Gruppe auf einen definierten, erlaubten Absender erlaubt. [B<-m> I] use L2 for logging, grab ID through RFC1891 ENVID, 6.2 [B<-i> I] d15 2 a25 5 news-muc1.de.cw.net Feeder news-ffm2.de.cw.net Feeder news-dus2.de.cw.net Feeder news.ecrc.de Feeder/Reader @ 1.26 log @flush pending (unfinished) work. @ text @d4 6 a9 2 [B<-b> I] a20 1 [B<-l> I] @ 1.25 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 @d7 8 @ 1.24 log @lmtp_response() no longer segfaults when a physical line ('\n' terminated) of the logical line input exceeds LMTP_LINE_MAXLEN but wraps the line by cutting it off; manpage header issue was no problem when using pod in Makefile; 00TODO updated; @ text @a2 1 ID logging, RFC1891 ENVID, 6.2 a3 1 **** LMTP REDESIGN **** d5 17 a21 9 RESULT: - robust checking and handling of NNTP protocol errors - logging into a single file -> write(2) !fwrite(3), (optional) syslog - invoked as mailer using LMTP, providing useful return status - invoked as command line (lowpri) - queuing is not supported for command line and a client issue for LMTP - remove To: and Cc: headers - allow crosspostings only through command line - new manpage @ 1.23 log @RFC1891 ENVID option to MAIL command might solve the ID logging problem @ text @d3 1 a3 3 ID logging problem, RFC1891 ENVID, 6.2 lmtp_response segfaults when a physical line ('\n' terminated) of the logical line input exceeds LMTP_LINE_MAXLEN. manpage header reads "User Contributed Perl Documentation" - Perl!? @ 1.22 log @updated documentation @ text @d3 1 a3 3 RFC1891 ENVID RFC1891 6.2 ID logging problem @ 1.21 log @added -m maxmessagesize option @ text @a1 1 use "RFC1918-like" private Domainnames for @@example.com (check which name is registered) @ 1.20 log @the MAIL and DATA callbacks checked for information no longer available after we proper free the structure containing this data. Now rewritten to first check for existence of structure then look into the structure; segfault fixed; 00TODO updated; long line test file renamed and long lines removed from normal test suite; @ text @a1 1 M=NNNN im Sendmail ergaenzen (weil Postfix gar nix hat) durch -l Commandline options fuer Maximum Message Size @ 1.19 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 @a8 1 something segfaults when NNTP unreachable data with very long lines is read as commands @ 1.18 log @reduced dmalloc() complaints about non-free()d resources during one a "lmtp post arg cw.de.sd.apps.dev.test" run to zero regarding own code; A memoryleak in str library 0.9.5 was detected which was reported to and fixed by RSE; @ text @a6 1 -h needs to understand multiple hosts as comma separated list d9 2 @ 1.17 log @removed DEBUGs; updated 00TODO; @ text @a4 1 dmalloc a7 1 NUL statt '\0' d30 4 @ 1.16 log @worked out all FIXMEs in msg.c; renamed SPLITSPLITBODY to SPLITHEADBODY - this was a search'n'replace accident; major changes in the "fold headers" functionality in msg_join(); modified str_parse calls to (re)use the now fixed [^not] operator; made workarounds for missing str_parse() functionality "s//g" and "malloc optimization" permanent; reviewed "Path: not-for-mail" issue and kept it as is; the "testmessage.vialmtp" now contains very long headers to be wrapped/ folded; updated 00TODO; @ text @d2 1 a2 3 M=NNNN im Sendmail ergaenzen (weil Postfix gar nix hat) durch -l Commandline options fuer Maximum Message Size a5 2 FIXMEs DEBUGs a7 1 FALSE, TRUE vs. == FALSE, == TRUE, != FALSE, != TRUE d11 1 a11 3 lmtp_response segfaults when a physical line ('\n' terminated) of the logical line input exceeds LMTP_LINE_MAXLEN. @ 1.15 log @one more item @ text @d5 1 @ 1.14 log @pushed down and updated 00TODO including relocation of pertinent informatin directly into source @ text @d2 3 @ 1.13 log @fixed GROUPMODE_ENVELOPE foo+bar@@quux.com notation prefix stripping where sendmail passes us already rewritten as argument to "RCPT To:" command @ text @a1 1 test auf mail.de.cw.net a2 1 ---------- a3 1 a4 1 // d9 6 a14 1 -h needs to understand multiple hosts as commaseparated list d20 1 a20 1 - logging into a single file -> write(2) !fwrite(3) a26 29 - (optional) syslog - command line choice for sending "exactly once" or "at least once" (default) **** SMTP ENGINE **** [RFC821, 4.5.1. MINIMUM IMPLEMENTATION] In order to make SMTP workable, the following minimum implementation is required for all receivers: [RFC821, 4.1.2. COMMAND SYNTAX] Verb Parameter Buffer ----+---------------------------------+------------------- HELO MAIL FROM: (char *)sender RCPT TO: (char **)recipients DATA (char *)message RSET NOOP QUIT rfc822 header parsing from petidomo o posting@@news.de.cw.net Newsgroup: cw.alert o posting+cw.alert@@news.de.cw.net o cw.alert@@news.de.cw.net cw.alert: "|lmtp2nntp ..." d28 1 a28 4 o cw.alert@@news.de.cw.net cw.alert: "|lmtp2nntp ... -d cw.alert" ID logging problem a33 43 ************* **** SMTP *** ************* --- RFC2800 ---- 2800 Internet Official Protocol Standards. J. Reynolds, R. Braden, S. Ginoza. May 2001. (Format: TXT=101648 bytes) (Obsoletes RFC2700) (Also STD1) (Status: STANDARD) RFC STD SMTP-Pipe SMTP Service Extension for Command Pipelining 2920 60* SMTP [Reserved for Simple Mail Transfer Protocol (SMTP). 10* See RFC 2821.] MAIL [Reserved for Internet Message Format. See RFC 11* See RFC 2822.] --- RFC2821 --- 2821 Simple Mail Transfer Protocol. J. Klensin, Editor. April 2001. (Format: TXT=192504 bytes) (Obsoletes RFC0821, RFC0974, RFC1869) (Status: PROPOSED STANDARD) --- RFC2822 --- 2822 Internet Message Format. P. Resnick, Editor. April 2001. (Format: TXT=110695 bytes) (Obsoletes RFC0822) (Status: PROPOSED STANDARD) --- RFC2920 --- 2920 SMTP Service Extension for Command Pipelining. N. Freed. September 2000. (Format: TXT=17065 bytes) (Obsoletes RFC2197) (Also STD0060) (Status: STANDARD) ************* **** NNTP *** ************* 0977 Network News Transfer Protocol. B. Kantor, P. Lapsley. Feb-01-1986. (Format: TXT=55062 bytes) (Status: PROPOSED STANDARD) 1036 Standard for interchange of USENET messages. M.R. Horton, R. Adams. Dec-01-1987. (Format: TXT=46891 bytes) (Obsoletes RFC0850) (Status: UNKNOWN) 2980 Common NNTP Extensions. S. Barber. October 2000. (Format: TXT=57165 bytes) (Status: INFORMATIONAL) @ 1.12 log @done ;) @ text @d13 1 @ 1.11 log @Autoconf phase 1 @ text @a1 1 openpkg a3 1 autoconf @ 1.10 log @INN kludge, IHAVE feeding, -d deliverymode command line option, DEFER handing @ text @d5 2 d8 1 a8 1 autoconf @ 1.9 log @typo in newsservers @ text @d2 12 @ 1.8 log @feeder/reader names @ text @d48 3 a50 3 news.muc1.de.cw.net Feeder news.ffm2.de.cw.net Feeder news.dus2.de.cw.net Feeder @ 1.7 log @rfc overview @ text @d48 5 @ 1.6 log @kick out statetables, add some RFC research @ text @d48 4 d76 14 @ 1.5 log @shortly before lmtp_message/lmtp_reset are vanished @ text @a32 13 State Function Continue -----+--------+----------------- 0 wait() LHLO > 1, MAIL > 2 1 wait() MAIL > 2 2 wait() RCPT > 3 3 wait() RCPT > 3, DATA > 4 4 data() >1 x wait() RSET > 1 x wait() NOOP > x x wait() QUIT > exit readline() from pth test* a33 2 string functions from http://www.engelschall.com/sw/str d48 24 a71 3 lmtp_reset() is to be called from a callback, usually RSET. It cleans up all messages, see lmtp_message(). @ 1.4 log @first time working with sendmail @ text @d61 6 @ 1.3 log @first successful loop() @ text @d49 12 @ 1.2 log @ralf s. engelschall first api draft @ text @d45 4 @ 1.1 log @Initial revision @ text @d6 1 a6 1 - logging into a single file -> write(2) !fwrite(3) d13 1 a13 1 - (optional) syslog d15 29 @ 1.1.1.1 log @genesis as rename from mail2nntp to lmtp2nntp @ text @@