Commit Graph

281 Commits

Author SHA1 Message Date
Ask Bjørn Hansen
6a027f4839 add simple test of config("me")
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@848 958fd67b-6ff1-0310-b445-bb7760255be9
2008-02-14 18:56:33 +00:00
Matt Sergeant
ef7d885929 Allow plugin tests to be in subdir (as with plugins).
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@737 958fd67b-6ff1-0310-b445-bb7760255be9
2007-05-17 22:02:32 +00:00
Matt Sergeant
60b74decd9 More tests
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@736 958fd67b-6ff1-0310-b445-bb7760255be9
2007-05-17 22:00:55 +00:00
Ask Bjørn Hansen
313f285847 Added tests for the rcpt_ok plugin (Guy Hulbert, issue #4)
http://code.google.com/p/smtpd/issues/detail?id=4



git-svn-id: https://svn.perl.org/qpsmtpd/trunk@725 958fd67b-6ff1-0310-b445-bb7760255be9
2007-03-15 06:55:24 +00:00
Matt Sergeant
be67f02dd8 Fix tests (idea from Guy Hulbert, with tweak from me).
git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@706 958fd67b-6ff1-0310-b445-bb7760255be9
2007-01-11 23:52:51 +00:00
John Peacock
8fcb46177b Add Qpsmtpd::Command to gather all parsing logic in one place (Hanno
Hecker)


git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@631 958fd67b-6ff1-0310-b445-bb7760255be9
2006-04-07 18:58:02 +00:00
John Peacock
b89a6d9e4c * plugins/queue/smtp-forward
s/register/init/ to match new plugin style (jpeacock)

* lib/Qpsmtpd/Address.pm
  t/qpsmtpd-address.t
    Ill-formed addresses should return null not partial garbage.
    Resolves https://rt.perl.org/rt3/Ticket/Display.html?id=38746
    Patch by Hanno Hecker.

* plugins/virus/clamav
    Clamav alternate config file.
    Resolves https://rt.perl.org/rt3/Ticket/Display.html?id=38736
    Patch by Robin Bowes.

* lib/Qpsmtpd/SMTP.pm
  lib/Qpsmtpd.pm
    Return multiline responses from plugins.
    Resolves https://rt.perl.org/rt3/Ticket/Display.html?id=38741
    Patch by Charlie Brady.

git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@630 958fd67b-6ff1-0310-b445-bb7760255be9
2006-03-20 16:47:05 +00:00
John Peacock
8a18bb00a1 * lib/Qpsmtpd/Address.pm
RFC-2821 Section 4.5.1 specifically requires <postmaster> (without
    domain name) as a legal RCPT TO: address.

* t/qpsmtpd-address.t
    Test the above.

git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.31@560 958fd67b-6ff1-0310-b445-bb7760255be9
2005-11-08 18:18:02 +00:00
John Peacock
37ec3b151e * lib/Qpsmtpd/Address.pm
Add POD to describe how to use the objects.  Make the addr_cmp 
    method private (no need to expose it).

* t/qpsmtpd-address.t
    Include tests of overloaded comparison, including sorting.

git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.31@559 958fd67b-6ff1-0310-b445-bb7760255be9
2005-11-02 18:48:32 +00:00
John Peacock
e6efda626f * lib/Qpsmtpd/Address.pm
Convert objects to hash.  Neuter parse() to wrapper around new().
    Add overload stringify to $obj->format().

* t/qpsmtpd-address.t
    Remove tests specific to parse().  Add test for overloaded "".

git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.31@552 958fd67b-6ff1-0310-b445-bb7760255be9
2005-10-10 15:49:50 +00:00
John Peacock
bfd72e8ade Fix test failures due to hook renames
git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.31@504 958fd67b-6ff1-0310-b445-bb7760255be9
2005-07-14 10:38:11 +00:00
John Peacock
662003437d * qpsmtpd-forkserver
Create a single Qpsmtpd::TcpServer object in the parent process and
     then rely on fork to let each child have it's own copy
     
 *   lib/Qpsmtpd/Plugin.pm
     Add new pre-connection and post-connection hooks
     
 *   README.plugins
     Document the above new hooks

 *   lib/Qpsmtpd.pm
     No longer have local value for trace_level() the first time through, which 
     was masking the global value (due to stupid search/replace error).
     Don't call log() from trace_level() since it is only ever called from
     within the varlog() sub when no logging plugin is registered.

 *   plugins/dnsbl
     Config line option to use DENY_DISCONNECT instead of DENY (since any IP
     on a blacklist should not have a chance to send anything for now).
     Add POD to document the new disconnect behavior

 *   lib/Qpsmtpd.pm
     Compatibility changes so test files continue to work
 
 *   t/Test/Qpsmtpd.pm
     Compatibility sub for core subs which call varlog() directly


git-svn-id: https://svn.perl.org/qpsmtpd/trunk@428 958fd67b-6ff1-0310-b445-bb7760255be9
2005-05-25 20:07:58 +00:00
John Peacock
bb36c60b6a Abstracted spool_dir creation and added temp_file() and temp_dir() subs to
make it easier for plugins to manage temporary workspace.  Also add POD and
tests for the new functions.  Still need to add tests to the temp_*() calls
from a plugin.


git-svn-id: https://svn.perl.org/qpsmtpd/trunk@369 958fd67b-6ff1-0310-b445-bb7760255be9
2005-02-22 02:47:39 +00:00
John Peacock
d790bd519d rcpt_handler requires a Qpsmtpd::Address object not just the bare address
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@368 958fd67b-6ff1-0310-b445-bb7760255be9
2005-02-22 00:38:06 +00:00
John Peacock
d26cffdb5e * t/addresses.t
Only need to 'my' the $command scalar once


git-svn-id: https://svn.perl.org/qpsmtpd/trunk@363 958fd67b-6ff1-0310-b445-bb7760255be9
2005-02-13 21:40:24 +00:00
John Peacock
dd7b8be78f * MANIFEST
Since the config/ folder was renamed, have to update this too

*   t/qpsmtpd-address.t
    New tests added so the count needs to be incremented, too


git-svn-id: https://svn.perl.org/qpsmtpd/trunk@361 958fd67b-6ff1-0310-b445-bb7760255be9
2005-02-13 21:28:10 +00:00
John Peacock
c840a1d04f Changes by jpeacock@cpan.org (John Peacock)
o plugins/check_badmailfromto
    - New plugin in the style of check_badmailfrom, which matches a pair
      of FROM/TO and makes it seem like the recipient's address no longer
      exists (but only from the matching sender's point of view).  Useful
      for stalkers and other harassment cases.

o plugins/dns_whitelist_soft
    - New plugin to provide a DNS-based whitelist (good for distributed
      sites).

o various files
    - Replaced tab character with 8 spaces and adjusted line breaks for
      better readability.

Changes by mct@toren.net (Michael C. Toren)

o lib/Qpsmtpd/SMTP.pm

    - Assumes a MAIL FROM value of "<#@[]>" (utilized by qmail to
      indicate a null sender when generating a doublebounce message)
      is equivalent to "<>".  Previously qpsmtpd complained that the
      value could not be parsed.

    - Adds LOGIN to the default list of supported auth mechanisms.
      The documentation in Auth.pm indicated that auth-login was not
      currently supported due to lack of functionality, however I can
      confirm that LOGIN appears to work fine as tested by using msmtp
      (http://msmtp.sourceforge.net/).  Are there any indications that
      LOGIN support is actually broken in the current implementation?

    - Removes the "X-Qpsmtpd-Auth: True" header appended when a message
      has been sent by an authenticated user.  One problem with such a
      header is that it's impossible to say which SMTP hop added it,
      and it provides no information which could be used to backtrack
      the transaction.  I grepped through my mail archives a bit
      looking for how other MTAs handled the problem, and decided it
      would be best to place this information in the Received: header:

        Received: from remotehost (HELO remotehost) (192.168.42.42)
          (smtp-auth username foo, mechanism cram-md5)
          by mail.netisland.net (qpsmtpd/0.28) with ESMTP; <date>


o lib/Qpsmtpd/Auth.pm:

    - Documentation update for the arguments passed to an auth
      handler; previously the $mechanism argument was not mentioned,
      which threw off the argument offsets.

    - Documentation update for auth-login removing the warning
      that auth-login is not currently supported due to lack of
      functionality.

    - Fix to execute a generic auth hook when a more specific
      auth-$mechanism hook does not exist.  (Previously posted
      to the list last week.)

    - Upon authentication, sets $session->{_auth_user} and
      $session->{_auth_mechanism} so that SMTP.pm can include them
      in the Received: header.


o plugins/queue/qmail-queue

    - Added a timestamp and the qmail-queue qp identifier to the
      "Queued!" 250 message, for compatibility with qmail-smtpd, which
      can be very useful for tracking message delivery from machine to
      machine.  For example, the new 250 message might be:

        250 Queued! 1105927468 qp 3210 <1105927457@netisland.net>

      qmail-smtpd returns:

        250 ok 1106546213 qp 7129

      Additionally, for consistency angle brackets are placed around
      the Message-ID displayed in the 250 if they were missing in the
      message header.


o plugins/check_badmailfrom:

    - Changed the error message from "Mail from $bad not accepted
      here" to "sorry, your envelope sender is in my badmailfrom
      list", for compatibility with qmail-smtpd.  I didn't see any
      reason to share with the sender the value of $bad, especially
      for situations where the sender was rejected resulting from a
      wildcard.


o plugins/check_earlytalker:
o plugins/require_resolvable_fromhost:

    - No longer checks for earlytalkers or resolvable senders if the
      connection note "whitelistclient" is set, which is nice for
      helping backup MX hosts empty their queue faster.


o plugins/count_unrecognized_commands:

    - Return code changed from DENY_DISCONNECT, which isn't valid in
      an unrecognized_command hook, to DENY, which in this context
      drops the connection anyway.  (Previously posted to the list
      last week.)


git-svn-id: https://svn.perl.org/qpsmtpd/trunk@356 958fd67b-6ff1-0310-b445-bb7760255be9
2005-01-28 03:30:50 +00:00
Ask Bjørn Hansen
e78ee79569 really really fix the parse test this time.
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@339 958fd67b-6ff1-0310-b445-bb7760255be9
2004-11-16 02:15:22 +00:00
Ask Bjørn Hansen
452c0746d0 fix test (thanks John & Peter)
update MANIFEST to not include files that are not included :-)


git-svn-id: https://svn.perl.org/qpsmtpd/trunk@338 958fd67b-6ff1-0310-b445-bb7760255be9
2004-11-16 02:07:39 +00:00
Ask Bjørn Hansen
8c390be6be moved config to config.sample
minor test cleanups

updated Changes file in preperation for a release


git-svn-id: https://svn.perl.org/qpsmtpd/trunk@336 958fd67b-6ff1-0310-b445-bb7760255be9
2004-11-09 15:25:52 +00:00
Matt Sergeant
86b15d8e0a Moved to attic
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@325 958fd67b-6ff1-0310-b445-bb7760255be9
2004-09-21 18:16:05 +00:00
Matt Sergeant
c341ff0d0f Initial stab at an outbound bounce_verp system.
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@321 958fd67b-6ff1-0310-b445-bb7760255be9
2004-09-20 08:09:02 +00:00
Ask Bjørn Hansen
eadaaf217c add tests for single character domains
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@317 958fd67b-6ff1-0310-b445-bb7760255be9
2004-09-14 19:34:19 +00:00
Matt Sergeant
069c5a6835 Apparently diag() doesn't do what I thought it did!
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@315 958fd67b-6ff1-0310-b445-bb7760255be9
2004-09-08 21:53:29 +00:00
Matt Sergeant
d811d6dbdd A real test (and a flaw in the harness fixed)
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@314 958fd67b-6ff1-0310-b445-bb7760255be9
2004-09-08 21:48:27 +00:00
Matt Sergeant
9224e436bb Plugin testing framework.
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@313 958fd67b-6ff1-0310-b445-bb7760255be9
2004-09-08 16:26:33 +00:00
Matt Sergeant
b26b79c6ca Only 20 tests defined.
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@302 958fd67b-6ff1-0310-b445-bb7760255be9
2004-09-05 16:32:35 +00:00
Matt Sergeant
325bb77713 command is in $command not $_
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@299 958fd67b-6ff1-0310-b445-bb7760255be9
2004-09-05 16:25:02 +00:00
Ask Bjørn Hansen
f31e4b1b6b 100% test coverage of Qpsmtpd::Address
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@265 958fd67b-6ff1-0310-b445-bb7760255be9
2004-07-16 02:51:39 +00:00
Ask Bjørn Hansen
7889fa6990 add basic tests (mail from and helo and ehlo)
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@264 958fd67b-6ff1-0310-b445-bb7760255be9
2004-07-16 02:22:27 +00:00
Ask Bjørn Hansen
87323ed62e Mail::Address does RFC822 addresses, we need SMTP addresses.
Replace Mail::Address with Peter J. Holzer's Qpsmtpd::Address module.


git-svn-id: https://svn.perl.org/qpsmtpd/trunk@261 958fd67b-6ff1-0310-b445-bb7760255be9
2004-07-14 23:58:47 +00:00