NAME

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

VERSION

version 3.20240701

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 parent periodically.

pre_loop_hook()

Hook which runs in the parent 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.

dequeue()

Call the dequeue handlers

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 parent 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.