Ray.Zachary has asked for the wisdom of the Perl Monks concerning the following question:

Hey guys, I can't use part milter macros such as $a, $b, $g, even if I let
$sender = $ctx->getsymval('g');
I got undef.

But some of those macros are avaliable, include: $_, $j, ${auth_authen} .... they works fine, they were all defined in sendmail.cf by default:
O InputMailFilters=ZackMilter O Milter.macros.connect=j, _, {daemon_name}, {if_name}, {if_addr} O Milter.macros.helo={tls_version}, {cipher}, {cipher_bits}, {cert_sub +ject}, {cert_issuer} O Milter.macros.envfrom= i, {auth_type}, {auth_authen}, {auth_ssf}, {a +uth_author}, {mail_mailer}, {mail_host}, {mail_addr} O Milter.macros.envrcpt={rcpt_mailer}, {rcpt_host}, {rcpt_addr} O Milter.macros.eom={msg_id}

I've tried to write "g" into "envfrom=" line, like
O Milter.macros.envfrom= g, i, {auth_type}, {auth_authen}, {auth_ssf}, + {auth_author}, {mail_mailer}, {mail_host}, {mail_addr}

$g still don't work, like $a, $b & some others.
In lines below of sendmail.cf, I found:
######################### # Format of headers # ######################### H?P?Return-Path: <$g> HReceived: $?sfrom $s $.$?_($?s$|from $.$_) $.$?{auth_type}(authenticated$?{auth_ssf} bits=${auth_ssf}$.) $.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version} (version=${tls_version} cipher=${cipher} bits=${cipher_bits} verif +y=${verify})$.$?u for $u; $|; $.$b H?D?Resent-Date: $a H?D?Date: $a H?F?Resent-From: $?x$x <$g>$|$g$. H?F?From: $?x$x <$g>$|$g$. H?x?Full-Name: $x # HPosted-Date: $a # H?l?Received-Date: $b H?M?Resent-Message-Id: <$t.$i@$j> H?M?Message-Id: <$t.$i@$j>

So I beleve $g, $a, $b has already defined, I wonder if they were disabled by default?
Is there something else I need to do for "enable" them?