OSSP CVS Repository

ossp - ossp-pkg/lmtp2nntp/00TODO
Not logged in
[Honeypot]  [Browse]  [Directory]  [Home]  [Login
[Reports]  [Search]  [Ticket]  [Timeline
  [Raw

ossp-pkg/lmtp2nntp/00TODO
   _       ___  ____ ____  ____   _         _        ___            _
  |_|_ _  / _ \/ ___/ ___||  _ \ | |_ _ __ | |_ _ __|__ \ _ _  _ _ | |_ _ __
  _|_||_|| | | \___ \___ \| |_) || | ' `  \| __| '_ \ _) | ' \| ' \| __| '_ \
 |_||_|_|| |_| |___) |__) |  __/ | | || || | |_| |_) / _/| || | || | |_| |_) |
  |_|_|_| \___/|____/____/|_|    |_|_||_||_|\__| .__/____|_||_|_||_|\__| .__/
                                               |_|                     |_|
  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 <leg+@andrew.cmu.edu>
  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 <foo\@bar>\nfoo\@bar (Foo Bar)\n<foo\@bar> 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


CVSTrac 2.0.1