NAME

    Mail::Milter::Authentication - A Perl Mail Authentication Milter

VERSION

    version 2.20200331.1

SYNOPSIS

    Subclass of Net::Server::PreFork for bringing up the main server
    process for authentication_milter.

    This class handles the server aspects of Authentication Milter.

    For individual Protocol handling please see the
    Mail::Milter::Authentication::Protocol::* classes

    For request handling please see Mail::Milter::Authentication::Handler

    Please see Net::Server docs for more detail of the server code.

    Please see the output of 'authentication_milter --help' for usage help.

DESCRIPTION

    A Perl Implementation of email authentication standards rolled up into
    a single easy to use milter.

METHODS

 preload_modules( $from, $matching )

    Preload (pre-fork) lazy loading modules.

    Takes a Package Name and a Base module, and loads all modules which
    match.

 write_to_log_hook()

    Hook which runs to write logs

 idle_loop_hook()

    Hook which runs in the master periodically.

 pre_loop_hook()

    Hook which runs in the master before looping.

 run_n_children_hook()

    Hook which runs in parent before it forks children.

 child_init_hook()

    Hook which runs after forking, sets up per process items.

 child_finish_hook()

    Hook which runs when the child is about to finish.

 pre_server_close_hook()

    Hook which runs before the server closes.

 get_client_proto()

    Get the protocol of the connecting client.

 get_client_port()

    Get the port of the connecting client.

 get_client_host()

    Get the host of the connecting client.

 get_client_path()

    Get the path of the connecting client.

 get_client_details()

    Get the details of the connecting client.

 process_request()

    Hook which runs for each request, passes control to metrics handler or
    process_main as appropriate.

 process_main()

    Method which runs for each request, sets up per request items and
    processes the request.

 send_exception_email()

    Send an email to the administrator with details of a problem.

 fatal($error)

    Log a fatal error and die in child

 fatal_global($error)

    Log a fatal error and die in child and parent

 setup_handlers()

    Setup the Handler objects.

 load_handler( $name )

    Load the $name Handler module

 setup_handler( $name )

    Setup the $name Handler object

 destroy_handler( $name )

    Remove the $name Handler

 register_callback( $name, $callback )

    Register the specified callback

 sort_all_callbacks()

    Sort the callbacks into the order in which they must be called

 sort_callbacks( $callback )

    Sort the callbacks for the $callback callback into the right order

 destroy_objects()

    Remove references to all objects

 get_queue_id()

    Return the queue ID (for logging) if possible.

 enable_extra_debugging()

    Turn on extra debugging mode, will cause child to exit on close.

 extra_debugging( $line )

    Cause $line to be written to log if extra debugging mode is enabled.

 logerror( $line )

    Log to the error log.

 loginfo( $line )

    Log to the info log.

 logdebug( $line )

    Log to the debug log.

FUNCTIONS

 get_installed_handlers()

    Return an array ref of installed handler modules.

 send_panic_email()

    Send an email to the administrator with details of a problem.

    Called from the parent process if the server exits.

 get_valid_pid($pid_file)

    Given a pid file, check for a valid process ID and return if valid.

 find_process()

    Search the process table for an authentication_milter master process

 control($command)

    Run a daemon command. Command can be one of start/restart/stop/status.

 start($hashref)

    Start the server. This method does not return.

        $hashref = {
            'pid_file'   => 'The pid file to use', #
            'daemon'     => 1/0,                   # Daemonize process?
        }

AUTHOR

    Marc Bradshaw <marc@marcbradshaw.net>

COPYRIGHT AND LICENSE

    This software is copyright (c) 2020 by Marc Bradshaw.

    This is free software; you can redistribute it and/or modify it under
    the same terms as the Perl 5 programming language system itself.