Mail::Milter::Authentication::Handler(3)

NAME
Mail::Milter::Authentication::Handler - Main handler class and methods

DESCRIPTION
Handle the milter requests and pass off to individual handlers

CONSTRUCTOR

new( $thischild )
    my $object = Mail::Milter::Authentication::Handler->new( $thischild );

    Takes the argument of the current Mail::Milter::Authentication object and creates a new handler object.

METHODS

top_setup_callback()
    Top level handler for handler setup.

top_connect_callback( $hostname, $ip )
    Top level handler for the connect event.

top_helo_callback( $helo_host )
    Top level handler for the HELO event.

top_envfrom_callback( $env_from )
    Top level handler for the MAIL FROM event.

top_envrcpt_callback( $env_to )
    Top level handler for the RCPT TO event.

top_header_callback( $header, $value )
    Top level handler for a Mail Header event.

top_eoh_callback()
    Top level handler for the end of headers event.

top_body_callback( $body_chunk )
    Top level handler for a Body Chunk event.

top_eom_callback()
    Top level handler for the End of Message event.

top_abort_callback()
    Top level handler for the Abort event.

top_close_callback()
    Top level handler for the Close event.

status( $status )
    Set the status of the current child as visible by ps.

config()
    Return the configuration hashref.

handler_config( $type )
    Return the configuration for the current handler.

handler_type()
    Return the current handler type.

set_return( $code )
    Set the return code to be passed back to the MTA.

get_return()
    Get the current return code.

get_reject_mail()
    Get the reject mail reason (or undef)

clear_reject_mail()
    Clear the reject mail reason

get_top_handler()
    Return the current top Handler object.

is_handler_loaded( $name )
    Check if the named handler is loaded.

get_handler( $name )
    Return the named handler object.

get_callbacks( $callback )
    Return the list of handlers which have callbacks for the given event in the order they must be called in.

set_object_maker( $name, $ref )
    Register an object maker for type 'name'

get_object( $name )
    Return the named object from the object store.

    Object 'resolver' will be created if it does not already exist.

    Object 'spf_server' will be created by the SPF handler if it does not already exist.

    Handlers may register makers for other types as required.

set_object( $name, $object, $destroy )
    Store the given object in the object store with the given name.

    If $destroy then the object will be destroyed when the connection to the child closes

destroy_object( $name )
    Remove the reference to the named object from the object store.

destroy_all_objects()
    Remove the references to all objects currently stored in the object store.

    Certain objects (resolver and spf_server) are not destroyed for performance reasons.

exit_on_close()
    Exit this child once it has completed, do not process further requests with this child.

reject_mail( $reason )
    Reject mail with the given reason

clear_all_symbols()
    Clear the symbol store.

clear_symbols()
    Clear the symbol store but do not remove the Connect symbols.

set_symbol( $code, $key, $value )
    Store the key value pair in the symbol store with the given code (event stage).

get_symbol( $searchkey )
    Return a value from the symbol store, searches all codes for the given key.

tempfail_on_error()
    Returns a TEMP FAIL to the calling MTA if the configuration is set to do so.

    Config can be set for all, authenticated, local, and trusted connections.

is_local_ip_address()
    Is the current connection from a local ip address?

    Requires the LocalIP Handler to be loaded.

is_trusted_ip_address()
    Is the current connection from a trusted ip address?

    Requires the TrustedIP Handler to be loaded.

is_authenticated()
    Is the current connection authenticated?

    Requires the Auth Handler to be loaded.

ip_address()
    Return the ip address of the current connection.

format_ctext( $text )
    Format text as ctext for use in headers.

format_ctext_no_space( $text )
    Format text as ctext with no spaces for use in headers.

format_header_comment( $comment )
    Format text as a comment for use in headers.

format_header_entry( $key, $value )
    Format text as a key value pair for use in authentication header.

get_domain_from( $address )
    Extract the domain from an email address.

get_address_from( $text )
    Extract an email address from a string using Email::Address.

get_my_hostname()
    Return the effective hostname of the MTA.

dbgout( $key, $value, $priority )
    Send output to debug and/or Mail Log.

    priority is a standard Syslog priority.

log_error( $error )
    Log an error.

dbgoutwrite()
    Write out logs to disc.

    Logs are not written immediately, they are written at the end of a connection so we can include a queue id. This is not available at the start of the process.

add_headers()
    Send the header changes to the MTA.

prepend_header( $field, $value )
    Add a trace header to the email.

add_auth_header( $value )
    Add a section to the authentication header for this email.

add_c_auth_header( $value )
    Add a section to the authentication header for this email, and to any subsequent emails for this connection.

append_header( $field, $value )
    Add a normal header to the email.

smfis_continue()
    Return Continue code.

smfis_tempfail()
    Return TempFail code.

smfis_reject()
    Return Reject code.

smfis_discard()
    Return Discard code.

smfis_accept()
    Return Accept code.

write_packet( $type, $data )
    Write a packet to the MTA (calls Protocol object)

add_header( $key, $value )
    Write an Add Header packet to the MTA (calls Protocol object)

insert_header( $index, $key, $value )
    Write an Insert Header packet to the MTA (calls Protocol object)

change_header( $key, $value, $index )
    Write a Change Header packet to the MTA (calls Protocol object)

WRITING HANDLERS
tbc

AUTHORS
Marc Bradshaw <marc@marcbradshaw.net>

COPYRIGHT
Copyright 2015

This library is free software; you may redistribute it and/or modify it under the same terms as Perl itself.