.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "Mail::Milter::Object 3pm" .TH Mail::Milter::Object 3pm "2023-01-22" "perl v5.36.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Mail::Milter::Object \- Perl extension to encapsulate a milter in an object .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 2 \& package Foo; \& use base Mail::Milter::Object; \& \& sub connect_callback { \& my $this = shift; \& my $ctx = shift; \& my @connect_args = @_; \& ... \& } \& \& ... \& my $milter = new Foo; .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" Normally, milters passed to \f(CW\*(C`Sendmail::Milter\*(C'\fR consist of nondescript hash references. \f(CW\*(C`Mail::Milter::Object\*(C'\fR transforms these callback hashes into fully qualified objects that are easier to maintain and understand. In conjunction with \f(CW\*(C`Mail::Milter::Chain\*(C'\fR, this also allows for a more modular approach to milter implementation, by allowing each milter to be a small, granular object that can exist independently of other milters. .PP Each object inheriting from this class has access to the hash reference making up the object itself. Two caveats must be noted when accessing this hashref: .PP * Key names used for private data should be prefixed by an underscore (_) in order to prevent accidental recognition as a callback name. .PP * Since a milter object can be reused many times throughout its existence, and perhaps reentrantly if threads are in use, the hashref should contain only global configuration data for this object rather than per-message data. Data stored per message or connection should be stashed in the milter context object by calling \f(CW\*(C`getpriv()\*(C'\fR and \f(CW\*(C`setpriv()\*(C'\fR on the context object. .SH "METHODS" .IX Header "METHODS" .IP "\fBnew()\fR" 4 .IX Item "new()" Creates a new \f(CW\*(C`Mail::Milter::Object\*(C'\fR. The fully qualified class is scanned for milter callback methods with names of the form CALLBACK_callback. If such a method exists, a corresponding callback entry point is added to this object. .SH "AUTHOR" .IX Header "AUTHOR" Todd Vierling, .SH "SEE ALSO" .IX Header "SEE ALSO" Mail::Milter, Sendmail::Milter.