Displaying 1 46 of 454 commits (0.003s)

OpenBSD — usr.sbin/smtpd smtp_session.c

    that log_debug is no longer needed
Delta File
+1 -4 usr.sbin/smtpd/smtp_session.c
+1 -4 1 file

OpenBSD — usr.sbin/smtpd smtp_session.c

    in session_read_data() do NOT enable back read event otherwise it will
    corrupt the session and cause a fatal.
    
    reported by Roman Kravchuk, with this diff in OpenSMTPD survives again the
    evil smtp_tester.py :-p
Delta File
+8 -10 usr.sbin/smtpd/smtp_session.c
+8 -10 1 file

OpenBSD — usr.sbin/smtpd smtp_session.c

    Do not call session_respond() AND session_imsg() from the same handler as
    they are exclusive. In the quit handler, it will lead to a corrupted
    session as the F_QUIT is set and session_respond() will kill the session
    before session_imsg() is done.
    
    For now, comment session_imsg(IMSG_MFA_QUIT) as we don't have filters
    enabled anyways. The proper fix will be to have session_imsg() called
    from the handler THEN upon return in smtp process do the session_respond()
    call.
    
    Fixes a segv reported by Roman Kravchuk. While at it, revert my last commit
    in session_error() which was probably needed because of this bug.
Delta File
+4 -6 usr.sbin/smtpd/smtp_session.c
+4 -6 1 file

OpenBSD — usr.sbin/smtpd smtp_session.c

    in session_error(), do not call session_destroy() when the F_WRITEONLY
    session flag is set, set F_QUIT instead.
    
    fixes a "corrupted session" fatalx() that triggers when a client
    disconnects after sending the end of message '.' but without waiting
    for server to acknowledge.
    
    reported by Roman Kravchuk <kravchuk.kp at gmail.com> a while ago, could not
    reproduce until today.
Delta File
+5 -2 usr.sbin/smtpd/smtp_session.c
+5 -2 1 file

OpenBSD — usr.sbin/smtpd ramqueue.c runner.c

    we should never use ramqueue_first_envelope() as a mean to determine the
    first schedulable envelope otherwise we end up with nsched wrong ...
    
    heck, let's kill ramqueue_first_envelope() and be done with it ;)
Delta File
+1 -7 usr.sbin/smtpd/ramqueue.c
+2 -2 usr.sbin/smtpd/runner.c
+3 -9 2 files

OpenBSD — usr.sbin/smtpd ramqueue.c runner.c

    the ramqueue filling at startup was busted, it would load envelopes one by
    one instead of doing it efficiently.
    
    fix runner_timeout() and ramqueue_load() so that at startup smtpd fills the
    ramqueue as long as there's no schedulable envelope in it, interrupts
    filling if there is and resume once it's scheduled.
    
    bug spotted by Nathanael Rensel, bug fix by me w/ help from eric@
    tested by eric@ and I
Delta File
+9 -5 usr.sbin/smtpd/ramqueue.c
+7 -4 usr.sbin/smtpd/runner.c
+16 -9 2 files

OpenBSD — usr.sbin/smtpd ramqueue.c runner.c

    now that we no longer do a stateful iteration on schedule queue, we need
    to make ramqueue_next_envelope() aware of pauses in mda/mta. while at it
    kill the pausing of bounces since they are reinjected in smtp and end up
    paused by the mda/mta cases.
    
    fixes an infinite loop observed by eric@ when pausing deliveries and
    trying to interrupt smtpd while it attempts to fetch next envelope :)
    
    tested by eric@ and I, ok eric@
Delta File
+14 -4 usr.sbin/smtpd/ramqueue.c
+4 -13 usr.sbin/smtpd/runner.c
+18 -17 2 files

OpenBSD — usr.sbin/smtpd ramqueue.c smtpd.h

    remove stateful iteration from ramqueue, if we ever need to reintroduce it
    we'll do it, but it isn't used and causes potential bugs
    
    idea by Nathanael Rensel, diff by me, ok eric@
Delta File
+2 -10 usr.sbin/smtpd/ramqueue.c
+1 -2 usr.sbin/smtpd/smtpd.h
+3 -12 2 files

OpenBSD — usr.sbin/smtpd ramqueue.c

    in ramqueue_schedule(), do not reorder ramqueue envelopes when forcing a
    reschedule of the entire queue as that can lead to an infinite loop.
    
    bug spotted and bugfix by Nathanael Rensen, thanks !
    
    ok eric@
Delta File
+2 -2 usr.sbin/smtpd/ramqueue.c
+2 -2 1 file

OpenBSD — usr.sbin/smtpd queue_fsqueue_ascii.c

    queue_fsqueue_ascii.c, you're not welcome anymore
Delta File
+0 -0 usr.sbin/smtpd/queue_fsqueue_ascii.c
+0 -0 1 file

OpenBSD — usr.sbin/smtpd queue_fsqueue_ascii.c envelope.c, usr.sbin/smtpd/smtpctl Makefile

    implement an envelope_ascii API that's not tied to a specific queue_backend
    simplify queue_fsqueue
Delta File
+0 -760 usr.sbin/smtpd/queue_fsqueue_ascii.c
+547 -0 usr.sbin/smtpd/envelope.c
+175 -1 usr.sbin/smtpd/queue_fsqueue.c
+34 -1 usr.sbin/smtpd/smtpd.h
+3 -3 usr.sbin/smtpd/smtpctl/Makefile
+3 -3 usr.sbin/smtpd/smtpd/Makefile
+762 -768 6 files

OpenBSD — usr.sbin/smtpd ssl.c

    enable back CA support, just don't verify client ...
    
    tested @ home
Delta File
+1 -4 usr.sbin/smtpd/ssl.c
+1 -4 1 file

OpenBSD — usr.sbin/smtpd ssl.c smtpd.c

    *finally* make use of certificate authority file if available !
    
    bits from relayd, ok chl@, ok eric@
Delta File
+18 -3 usr.sbin/smtpd/ssl.c
+5 -5 usr.sbin/smtpd/smtpd.c
+9 -1 usr.sbin/smtpd/smtp.c
+6 -3 usr.sbin/smtpd/smtpd.conf.5
+3 -1 usr.sbin/smtpd/smtpd.h
+41 -13 5 files

OpenBSD — usr.sbin/smtpd smtpd.conf.5

    - man page had an example wrong
    
    spotted and diff by Ptter J. Philipp <php at centroid.eu> a while ago, thanks
Delta File
+3 -3 usr.sbin/smtpd/smtpd.conf.5
+3 -3 1 file

OpenBSD — usr.sbin/smtpd smtpd.c delivery_filename.c, usr.sbin/smtpd/smtpd Makefile

    - introduce delivery backend API (delivery.c)
    - move each delivery method to it's own delivery backend
    - simplify smtpd.c accordingly
    - rename A_EXT -> A_MDA since that's what we really do
    
    ok eric@
Delta File
+8 -101 usr.sbin/smtpd/smtpd.c
+109 -0 usr.sbin/smtpd/delivery_filename.c
+109 -0 usr.sbin/smtpd/delivery_maildir.c
+64 -0 usr.sbin/smtpd/delivery_mbox.c
+62 -0 usr.sbin/smtpd/delivery_mda.c
+61 -0 usr.sbin/smtpd/delivery.c
+33 -20 6 files not shown
+446 -121 12 files

OpenBSD — usr.sbin/smtpd filter.c filter_api.c, usr.sbin/smtpd/libsmtpdfilter Makefile

    - change callback prototypes in filter.c to allow stricter checks
    - introduce STATUS_WAITING, filters will reroute async DNS queries through
      LKA in a near future
    - filter_api.c will contain our filter API (empty for now)
    - Makefile to build libsmtpdfilter (not linked to the build,dev stuff only)
Delta File
+32 -21 usr.sbin/smtpd/filter.c
+21 -0 usr.sbin/smtpd/filter_api.c
+13 -7 usr.sbin/smtpd/filter.h
+16 -0 usr.sbin/smtpd/libsmtpdfilter/Makefile
+82 -28 4 files

OpenBSD — usr.sbin/smtpd queue_fsqueue.c

    wooooops defines missing from previous commit
Delta File
+12 -2 usr.sbin/smtpd/queue_fsqueue.c
+12 -2 1 file

OpenBSD — usr.sbin/smtpd queue_fsqueue.c queue_shared.c

    Qwalk, our API to linearly walk over the persistent queue, did not take the
    queue_backend into account and assumed a filesystem with a specific layout.
    
    This commit does plenty of things:
    
    - make qwalk an abstraction in the queue_backend API, and impose queue
      drivers to implement qwalk_open(), qwalk() and qwalk_close();
    
    - move previous qwalk_open(), qwalk() and qwalk_close() to the fsqueue
      driver since they were fsqueue specific ...
    
    - make qwalk API work with msgid/evpid instead of pathnames since we're
      going to use the queue_backend API to load envelopes by evpid anyway;
    
    - makes smtpd use *solely* the queue_backend API when manipulating the
      queue. pathnames were removed from smtpd.h and moved into the fsqueue
      which means we can now store a queue anywhere ... as long as we write
      the ten functions or so required for a queue driver ;-)
    
    ok eric@, ok chl@
Delta File
+250 -24 usr.sbin/smtpd/queue_fsqueue.c
+9 -167 usr.sbin/smtpd/queue_shared.c
+14 -102 usr.sbin/smtpd/runner.c
+61 -2 usr.sbin/smtpd/queue_backend.c
+12 -17 usr.sbin/smtpd/smtpd.h
+10 -16 usr.sbin/smtpd/queue.c
+24 -14 2 files not shown
+380 -342 8 files

OpenBSD — usr.sbin/smtpd runner.c control.c

    - fix smtpctl pause/resume so the ramqueue scheduling is done correctly
    - rename IMSG and smtpctl pause/resume parameters
    - update man page
    
    tested by me, ok chl@, eric@
Delta File
+19 -14 usr.sbin/smtpd/runner.c
+9 -9 usr.sbin/smtpd/control.c
+7 -7 usr.sbin/smtpd/parser.c
+5 -5 usr.sbin/smtpd/smtpd.c
+5 -5 usr.sbin/smtpd/queue.c
+5 -5 usr.sbin/smtpd/smtpctl.c
+9 -9 2 files not shown
+59 -54 8 files

OpenBSD — usr.sbin/smtpd smtpctl.c parser.c

    - smtpctl schedule no longer works, instead, use 'smtpctl schedule-id <id>'
    - introduce 'smtpctl schedule-all'
    
    ok eric@
Delta File
+12 -1 usr.sbin/smtpd/smtpctl.c
+6 -5 usr.sbin/smtpd/parser.c
+8 -1 usr.sbin/smtpd/ramqueue.c
+5 -3 usr.sbin/smtpd/smtpctl.8
+2 -1 usr.sbin/smtpd/parser.h
+33 -11 5 files

OpenBSD — usr.sbin/smtpd queue_fsqueue.c smtpd.h

    introduce Q_CORRUPT and queue_backend operation to move a message from
    schedule queue to corrupt queue upon envelope loading failure.
    
    tested by me, ok eric@
Delta File
+35 -5 usr.sbin/smtpd/queue_fsqueue.c
+7 -3 usr.sbin/smtpd/smtpd.h
+3 -7 usr.sbin/smtpd/queue_fsqueue_ascii.c
+7 -1 usr.sbin/smtpd/queue_backend.c
+5 -2 usr.sbin/smtpd/ramqueue.c
+57 -18 5 files

OpenBSD — usr.sbin/smtpd queue_fsqueue_ascii.c lka_session.c, usr.sbin/smtpd/smtpctl Makefile

    fsqueue no longer stores envelopes by dumping the structure, instead use a
    couple of load/dump functions to convert to and from a human readable fmt.
    while at it kill struct delivery and merge back its fields to the envelope.
    
    this basically means we shouldn't require users to flush their queues every
    time we make a change to struct envelope.
    
    work is not done, but we're at a better state than the binary fsqueue so
    we'll improve it in-tree.
    
    has been running on my own box for the last 12 hours or so
    ok eric@, chl@
Delta File
+783 -0 usr.sbin/smtpd/queue_fsqueue_ascii.c
+56 -55 usr.sbin/smtpd/lka_session.c
+47 -56 usr.sbin/smtpd/queue_fsqueue.c
+40 -43 usr.sbin/smtpd/queue_shared.c
+36 -41 usr.sbin/smtpd/smtpd.h
+38 -38 usr.sbin/smtpd/smtp_session.c
+235 -157 16 files not shown
+1,235 -390 22 files

OpenBSD — usr.sbin/smtpd aliases.c

    fix parsing of :include: aliases
Delta File
+9 -3 usr.sbin/smtpd/aliases.c
+9 -3 1 file

OpenBSD — usr.sbin/smtpd makemap.8

    document that virtual maps require a domain key
Delta File
+5 -2 usr.sbin/smtpd/makemap.8
+5 -2 1 file

OpenBSD — usr.sbin/smtpd smtp_session.c

    - fix a segv caused by a deep recursion introduced with a recent quick-fix
      and triggering if clients sent a large number of DATA lines in one write
Delta File
+6 -5 usr.sbin/smtpd/smtp_session.c
+6 -5 1 file

OpenBSD — usr.sbin/smtpd smtpd.conf.5

    clarify that network sources are to be specified in CIDR notation
    
    by David Walker, ok jmc@
Delta File
+4 -3 usr.sbin/smtpd/smtpd.conf.5
+4 -3 1 file

OpenBSD — usr.sbin/smtpd smtp_session.c

    removing annoying debug log
Delta File
+6 -2 usr.sbin/smtpd/smtp_session.c
+6 -2 1 file

OpenBSD — usr.sbin/smtpd ramqueue.c runner.c

    a single ramqueue message may be shared by many ramqueue envelopes to be
    delivered to many ramqueue hosts, therefore storing the rq_host pointer in
    the rq_msg envelope is wrong and causes baaaaad behavior.
    
    this commit fixes reliability issues in runner process, experienced and
    reported by many
Delta File
+3 -4 usr.sbin/smtpd/ramqueue.c
+2 -2 usr.sbin/smtpd/runner.c
+2 -2 usr.sbin/smtpd/smtpd.h
+7 -8 3 files

OpenBSD — usr.sbin/smtpd smtp_session.c filter.h

    - introduce filtermask in struct smtpd
    - do not forward lines to mfa when FILTER_DATALINE is not set in filtermask
    
    prevents smtpd from handling mails slowly while I'm hacking on filters
    support
Delta File
+9 -5 usr.sbin/smtpd/smtp_session.c
+6 -6 usr.sbin/smtpd/filter.h
+2 -1 usr.sbin/smtpd/smtpd.h
+17 -12 3 files

OpenBSD — usr.sbin/smtpd smtp.c

    move a log_debug() call to a less annoying spot so that it does not get
    called for each single line of DATA exchanged between smtp and mfa
Delta File
+2 -2 usr.sbin/smtpd/smtp.c
+2 -2 1 file

OpenBSD — usr.sbin/smtpd filter.c smtp_session.c

    add support for per-line DATA callbacks, this allows filters to take their
    decisions *while* the message is being received by the client.
Delta File
+12 -32 usr.sbin/smtpd/filter.c
+33 -8 usr.sbin/smtpd/smtp_session.c
+6 -13 usr.sbin/smtpd/filter.h
+15 -2 usr.sbin/smtpd/mfa_session.c
+13 -1 usr.sbin/smtpd/mfa.c
+2 -3 usr.sbin/smtpd/parse.y
+5 -3 2 files not shown
+86 -62 8 files

OpenBSD — usr.sbin/smtpd mfa_session.c

    fix pasto in strlcpy() truncation test
Delta File
+5 -5 usr.sbin/smtpd/mfa_session.c
+5 -5 1 file

OpenBSD — usr.sbin/smtpd smtpd.h

    typo
Delta File
+2 -2 usr.sbin/smtpd/smtpd.h
+2 -2 1 file

OpenBSD — usr.sbin/smtpd mfa_session.c filter.c, usr.sbin/smtpd/smtpd Makefile

    initial support for a session-time filtering API
    
    currently only HELO/EHLO, MAIL, RCPT are supported, however ... I have
    voluntarily disabled filters at smtpd.conf level so people don't play with
    it until the API has stabilized a bit
    
    discussed with several people in private, no one opposed the feature
Delta File
+308 -0 usr.sbin/smtpd/mfa_session.c
+252 -0 usr.sbin/smtpd/filter.c
+121 -18 usr.sbin/smtpd/mfa.c
+125 -0 usr.sbin/smtpd/smtpfilter.c
+91 -0 usr.sbin/smtpd/filter.h
+51 -25 usr.sbin/smtpd/parse.y
+107 -87 6 files not shown
+1,055 -130 12 files

OpenBSD — usr.sbin/smtpd runner.c ramqueue.c

    - plug a memory leak in runner_remove_envelope()
    - cosmetic change
Delta File
+16 -15 usr.sbin/smtpd/runner.c
+1 -2 usr.sbin/smtpd/ramqueue.c
+17 -17 2 files

OpenBSD — usr.sbin/smtpd runner.c ramqueue.c

    move ramqueue_host pointer from ramqueue_envelope to ramqueue_message.
    this allows us to save one pointer from each envelope stored in ram while
    still allowing O(1) host lookups by ramqueue_envelope.
Delta File
+26 -23 usr.sbin/smtpd/runner.c
+10 -7 usr.sbin/smtpd/ramqueue.c
+8 -5 usr.sbin/smtpd/smtpd.h
+44 -35 3 files

OpenBSD — usr.sbin/smtpd runner.c ramqueue.c

    - teach smtpctl remove about the new ramqueue structure
    - bonus #1: O(log n) removal of envelopes
    - bonus #2: removing all envelopes that have the same msgid works again
Delta File
+50 -20 usr.sbin/smtpd/runner.c
+22 -21 usr.sbin/smtpd/ramqueue.c
+6 -4 usr.sbin/smtpd/smtpd.h
+4 -4 usr.sbin/smtpd/smtpctl.8
+82 -49 4 files

OpenBSD — usr.sbin/smtpd ramqueue.c smtpd.h

    - introduce ramqueue_lookup_{host,message,envelope} to perform lookups in
      the new ramqueue structure
    - introduce ramqueue_reschedule() and ramqueue_reschedule_envelope() which
      to reschedule a message or a specific envelope.
    
    O(n) ->  O(log n)  \o/
Delta File
+59 -17 usr.sbin/smtpd/ramqueue.c
+8 -2 usr.sbin/smtpd/smtpd.h
+67 -19 2 files

OpenBSD — usr.sbin/smtpd smtpctl.c parser.h

    smtpctl show sizes, displays the size of queue-related structures, useful
    for developers to see the impact of structure changes on memory and disk
    usage, and useful for users to better understand 'smtpctl show stats'
Delta File
+31 -2 usr.sbin/smtpd/smtpctl.c
+2 -1 usr.sbin/smtpd/parser.h
+2 -1 usr.sbin/smtpd/parser.c
+35 -4 3 files

OpenBSD — usr.sbin/smtpd ramqueue.c smtpd.h

    add a host-tree and an envelope-tree in the ramqueue, they will be used to
    improve scheduling and general ramqueue operations. unused yet
Delta File
+56 -5 usr.sbin/smtpd/ramqueue.c
+21 -5 usr.sbin/smtpd/smtpd.h
+9 -3 usr.sbin/smtpd/runner.c
+9 -1 usr.sbin/smtpd/smtpctl.c
+95 -14 4 files

OpenBSD — usr.sbin/smtpd ramqueue.c control.c

    - update smtpctl.8 to reflect reality
    - bring back 'smtpctl schedule' and 'smtpctl remove' to life
    
    Things you should know:
    
    The ramqueue data structure is not finished yet and lacks an envelope tree
    for evpid lookups. I wanted to wait until I'm done but too many people are
    affected by not being able to reschedule envelopes, this is a quick fix.
    
    So right now there's an O(rrible) complexity as both commands will perform
    a (possibly aborted) queue scan leading to O(n). I will make that O(log n)
    soon.
    
    Also, smtpctl remove no longer supports removing an entire message, I will
    fix that very soon too.
Delta File
+40 -1 usr.sbin/smtpd/ramqueue.c
+33 -1 usr.sbin/smtpd/control.c
+28 -1 usr.sbin/smtpd/runner.c
+14 -14 usr.sbin/smtpd/smtpctl.8
+26 -1 usr.sbin/smtpd/smtpctl.c
+15 -1 usr.sbin/smtpd/parser.c
+9 -2 2 files not shown
+165 -21 8 files

OpenBSD — usr.sbin/smtpd mta.c client.c

    fix that fscking "fgetln(): bad file descriptor" bug experienced by many.
    
    long story short: datafp is reused by the possibly multiple client sessions
    of a MTA session. fclosing it in client_close() will cause the file pointer
    to be invalidated as soon as we fail the primary MX and attempt the second.
    
    bug introduced while trying to fix a leak causing a crash for a user, now
    smtpd will unconditionnally fclose() in MTA_DONE and if a leak still exists
    then we should track why the mta session doesnt reach MTA_DONE.
Delta File
+2 -3 usr.sbin/smtpd/mta.c
+1 -2 usr.sbin/smtpd/client.c
+3 -5 2 files

OpenBSD — usr.sbin/smtpd lka_session.c

    %u in format string is rcpt.user not rcpt.domain
    
    From Tim van der Molen <tbvdm at xs4all.nl>
Delta File
+2 -2 usr.sbin/smtpd/lka_session.c
+2 -2 1 file

OpenBSD — usr.sbin/smtpd parse.y smtpd.conf.5

    'relay as' and 'relay via as' rules allow smtpd to rewrite the user part,
    the domain part or the entire address of the sender at the SMTP sesssion
    level. this is not masquerade but allows smtpd to communicate with hosts
    that do a check of SMTP sender fqdn.
    
    sent to tech@, a couple 'no regression' feedbacks
Delta File
+81 -7 usr.sbin/smtpd/parse.y
+24 -2 usr.sbin/smtpd/smtpd.conf.5
+5 -1 usr.sbin/smtpd/lka_session.c
+3 -1 usr.sbin/smtpd/smtpd.h
+113 -11 4 files

OpenBSD — usr.sbin/smtpd parse.y smtpd.conf.5

    teach smtpd how to listen on an interface group so that we can do:
            listen on egress
            listen on wlan
    
    idea unvoluntarily suggested by Mikolaj Kucharski a few weeks ago,
    unslacked after theo suggested it again.
Delta File
+50 -2 usr.sbin/smtpd/parse.y
+4 -3 usr.sbin/smtpd/smtpd.conf.5
+54 -5 2 files

OpenBSD — usr.sbin/smtpd smtpd.conf.5

    fix examples so they stay do not use external utilities and do not refer
    to external domains
    
    prompted by deraadt@
Delta File
+14 -14 usr.sbin/smtpd/smtpd.conf.5
+14 -14 1 file

OpenBSD — usr.sbin/smtpd smtpd.h

    remove unused commented structure
Delta File
+1 -13 usr.sbin/smtpd/smtpd.h
+1 -13 1 file

OpenBSD — usr.sbin/smtpd map_backend_stdio.c map_backend_db.c, usr.sbin/smtpd/makemap Makefile

    until now the map_backend API was not really useful for backends that are
    not key/val stores. refactored a bit so that smtpd can really take
    advantage of backends. preliminary work for ldap support ;-)
    
    no functionnal change
Delta File
+281 -0 usr.sbin/smtpd/map_backend_stdio.c
+258 -0 usr.sbin/smtpd/map_backend_db.c
+10 -143 usr.sbin/smtpd/map_backend.c
+2 -15 usr.sbin/smtpd/map.c
+8 -6 usr.sbin/smtpd/smtpd/Makefile
+3 -8 usr.sbin/smtpd/smtpd.h
+2 -2 usr.sbin/smtpd/makemap/Makefile
+564 -174 7 files

OpenBSD — usr.sbin/smtpd mta.c ruleset.c

    remove annoying log_debug()
Delta File
+1 -3 usr.sbin/smtpd/mta.c
+1 -2 usr.sbin/smtpd/ruleset.c
+2 -5 2 files

OpenBSD — usr.sbin/smtpd lka_session.c

    when a user add himself to his own ~/.forward, the delivery method was not
    reset by ruleset matching and since it was cleared upon entering
    lka_session_resolve_node(), it would trigger a fatal().
Delta File
+16 -3 usr.sbin/smtpd/lka_session.c
+16 -3 1 file