1use strict; 2 3## A CONFIGURATION FILE FOR AMAVISD-NEW, LISTING ALL CONFIGURATION VARIABLES 4## WITH THEIR DEFAULT VALUES (FOR REFERENCE ONLY, NON-AUTHORITATIVE) 5 6## The 'after-default' comment indicates that these variables obtain their 7## default value if the config file left them undefined. It means these values 8## are not yet available during processing of the configuration file, but that 9## they can derive their value from other configurations variables no matter 10## where in the configuration file they appear. 11 12 13## GENERAL 14 15# $myhostname = ... predefined default from uname(3), must be a FQDN 16# $mydomain = ... no useful default, should be set if used in expressions 17# $snmp_contact = ''; 18# $snmp_location = ''; 19# $daemon_user = undef; 20# $daemon_group = undef; 21# $MYHOME = '/var/amavis'; 22# $TEMPBASE = $MYHOME; # after-default 23# $db_home = "$MYHOME/db"; # after-default 24# $pid_file = "$MYHOME/amavisd.pid"; # after-default 25# $lock_file = undef; 26# $daemon_chroot_dir = undef; 27# $max_requests = 20; # retire a child after that many accepts 28# $max_servers = 2; # number of pre-forked children 29# $min_servers = undef; # see Net::Server::Prefork for semantics 30# $min_spare_servers = undef; 31# $max_spare_servers = undef; 32# $child_timeout = 8*60; 33# $localpart_is_case_sensitive = 0; 34# $enable_db = undef; 35# $enable_zmq = undef; 36# @zmq_sockets = ( "ipc://$MYHOME/amavisd-zmq.sock" ); # after-default 37# $nanny_details_level = 1; # verbosity: 0, 1, 2 38# @additional_perl_modules = (); 39# @local_domains_maps=(\%local_domains,\@local_domains_acl,\$local_domains_re); 40# @mynetworks = qw( 127.0.0.0/8 [::1] 169.254.0.0/16 [fe80::]/10 41# 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 [fc00::]/7 ); 42# @mynetworks_maps = (\@mynetworks); 43# @client_ipaddr_policy = map { $_ => 'MYNETS' } @mynetworks_maps; 44# $mail_digest_algorithm = 'MD5'; 45# $mail_part_digest_algorithm = 'SHA1'; 46 47 48## LOGGING AND DEBUGGING 49 50# $log_level = 0; 51# $logfile = undef; 52# $do_syslog = undef; # same as 0 53# $syslog_ident = 'amavis'; 54# $syslog_facility = 'mail'; 55# $logline_maxlen = 980; 56# enable_log_capture_dump = undef; 57 58# $log_short_templ ... built-in default at the end of file amavisd 59# $log_verbose_templ ... built-in default at the end of file amavisd 60# $log_recip_templ = ... built-in default at the end of file amavisd 61# $log_templ = $log_short_templ; 62 63# @debug_sender_acl = (); 64# @debug_sender_maps = (\@debug_sender_acl); 65# @debug_recipient_maps = (); 66# $sa_debug = undef; 67# $allow_preserving_evidence = 1; 68 69 70## DKIM VERIFICATION 71 72# $enable_dkim_verification = undef; 73# $reputation_factor = 0.2; 74# @signer_reputation_maps = (); 75# @author_to_policy_bank_maps = (); 76# $dkim_minimum_key_bits = 1024; 77# $myauthservid = $myhostname; # after-default (RFC 5451) 78# $dkim_minimum_key_bits = 1024; 79 80## DKIM SIGNING 81 82# $enable_dkim_signing = undef; 83# %dkim_signing_keys = (); 84# @dkim_signature_options_bysender_maps = (); 85# $dkim_signing_service = undef; 86# 87# for (qw(Accept-Language Archived-At Auto-Submitted Content-Alternative 88# Content-Base Content-Class Content-Description Content-Disposition 89# Content-Duration Content-Features Content-Id Content-Language 90# Content-Location Content-MD5 Content-Transfer-Encoding In-Reply-To 91# List-Archive List-Help List-Id List-Owner List-Post List-Subscribe 92# List-Unsubscribe Message-Context Message-ID MIME-Version 93# Organisation Organization Original-Message-ID Pics-Label 94# Precedence Received References Reply-To Resent-Date Resent-From 95# Resent-Message-ID Resent-Sender Sensitivity Solicitation 96# User-Agent VBR-Info X-Mailer)) { $signed_header_fields{lc $_} = 1 } 97# for (qw(From Date Subject Content-Type)) { $signed_header_fields{lc $_} = 2 } 98 99 100## MTA INTERFACE - INPUT 101 102# @listen_sockets = ... $unix_socketname and $inet_socket_port are added here 103# $unix_socketname = undef; # Unix socket to accept amavis helper protocol 104# $unix_socket_mode = undef; # sets sockets protection (numeric mode), or undef 105# $inet_socket_port = undef; # accept connections on this TCP port(s) (SMTP...) 106# $inet_socket_bind = [ '127.0.0.1', '[::1]' ]; # if both inet & inet6 avail. 107# $inet_socket_bind = '127.0.0.1'; # if only inet available 108# $inet_socket_bind = '[::1]' # if only inet6 available 109# @inet_acl = qw( 127.0.0.1 [::1] ); 110# $listen_queue_size = undef; 111 112# $protocol = ... defaults to 'SMTP' or 'LMTP' (autodetected) on inet and inet6 113# sockets; must be configured explicitly for Unix sockets. 114# Possible values: 'SMTP', 'LMTP', 'AM.PDP', 115# and with appropriate patches applied also: 'COURIER' or 'QMQPqq' 116 117# $soft_bounce = undef; 118# $smtpd_timeout = 8*60; 119# $smtpd_recipient_limit = 1100; 120# $smtpd_message_size_limit = undef; # site-wide limit 121# @message_size_limit_maps = (); # per-recipient limits 122# $smtpd_greeting_banner = '${helo-name} ${protocol} ${product} service ready'; 123# $smtpd_quit_banner = '${helo-name} ${product} closing transmission channel'; 124# $auth_required_inp = undef; 125# $auth_required_release = 1; 126# @auth_mech_avail=(); # empty list disables incoming AUTH; or: qw(PLAIN LOGIN) 127# $smtp_connection_cache_on_demand = 1; 128# $smtp_connection_cache_enable = 1; 129# $enforce_smtpd_message_size_limit_64kb_min = 1; 130# @smtpd_discard_ehlo_keywords = (); 131 132# $tls_security_level_in = undef; # undef, 'may', 'encrypt', ... 133# $smtpd_tls_key_file = undef; # deprecated, use 'SSL_key_file' below 134# $smtpd_tls_cert_file = undef; # deprecated, use 'SSL_cert_file' below 135# %smtpd_tls_server_options = ( 136# SSL_verifycn_scheme => 'smtp', 137# SSL_session_cache => 2, 138# # SSL_key_file => "...", # default taken from $smtpd_tls_key_file 139# # SSL_cert_file => "...", # default taken from $smtpd_tls_cert_file 140# ); 141 142 143## MTA INTERFACE - OUTPUT 144 145## see also $notify_method, $forward_method and $*_quarantine_method 146 147# $localhost_name = 'localhost'; # my EHLO name, and inserted in Received 148# $local_client_bind_address = undef; # my source IP address as a SMTP client 149# $auth_required_out = undef; 150# $amavis_auth_user = undef; # for submitting notifications and quarantine 151# $amavis_auth_pass = undef; 152# $auth_reauthenticate_forwarded = undef; # our credentials for forwarding too 153 154# $tls_security_level_out = undef; # undef, 'may', 'encrypt', ... 155# %smtp_tls_client_options = ( 156# SSL_verifycn_scheme => 'smtp', 157# ); 158 159 160## MAIL FORWARDING 161 162# $forward_method = 'smtp:[127.0.0.1]:10025'; # may be arrayref 163# # or 'smtp:[::1]:10025' when INET6 is available 164# @forward_method_maps = ( sub { Opaque(c('forward_method')) } ); 165# $resend_method = undef; # falls back to $forward_method 166# $always_bcc = undef; 167 168# $final_virus_destiny = D_DISCARD; # subj to @viruses_that_fake_sender_maps 169# $final_banned_destiny = D_DISCARD; 170# $final_spam_destiny = D_PASS; # subject to $sa_dsn_cutoff_level 171# $final_bad_header_destiny = D_PASS; 172 173 174## QUARANTINE 175 176# $release_method = undef; # falls back to $notify_method 177# $requeue_method = 'smtp:[127.0.0.1]:25'; 178# # or 'smtp:[::1]:25' when INET6 is available 179# $release_format = 'resend'; # (dsn), (arf), attach, plain, resend 180# $report_format = 'arf'; # (dsn), arf, attach, plain, resend 181# $attachment_password = ''; # '': no pwd, undef: PIN, code ref, or static str 182# $attachment_email_name = 'msg-%m.eml'; 183# $attachment_outer_name = 'msg-%m.zip'; 184 185# $virus_quarantine_method = 'local:virus-%m'; 186# $spam_quarantine_method = 'local:spam-%m.gz'; 187# $banned_files_quarantine_method = 'local:banned-%m'; 188# $bad_header_quarantine_method = 'local:badh-%m'; 189# $clean_quarantine_method = undef; 190# $archive_quarantine_method = undef; 191 192# $mail_id_size_bits = 72; 193 194# $QUARANTINEDIR = undef; 195# $quarantine_subdir_levels = undef; # 0 or 1 (undef treated as 0) 196# $sql_quarantine_chunksize_max; # see SQL section 197 198# $virus_quarantine_to = 'virus-quarantine'; # via %local_delivery_aliases 199# $banned_quarantine_to = 'banned-quarantine'; 200# $bad_header_quarantine_to= 'bad-header-quarantine'; 201# $spam_quarantine_to = 'spam-quarantine'; 202# $spam_quarantine_bysender_to = undef; 203# $clean_quarantine_to = 'clean-quarantine'; 204# $archive_quarantine_to = 'archive-quarantine'; 205 206# @virus_quarantine_to_maps = (\$virus_quarantine_to); 207# @banned_quarantine_to_maps = (\$banned_quarantine_to); 208# @bad_header_quarantine_to_maps = (\$bad_header_quarantine_to); 209# @spam_quarantine_to_maps = (\$spam_quarantine_to); 210# @spam_quarantine_bysender_to_maps = (\$spam_quarantine_bysender_to); 211# @clean_quarantine_to_maps = (\$clean_quarantine_to); 212# @archive_quarantine_to_maps = (\$archive_quarantine_to); 213 214# %local_delivery_aliases ... predefined, used by a delivery method 'local:' 215# $mailfrom_to_quarantine = undef; # undef keeps original sender 216 217 218## NOTIFICATIONS (DSN, admin, recip) 219 220# $notify_method = 'smtp:[127.0.0.1]:10025'; 221# # or 'smtp:[::1]:10025' when INET6 is available 222 223# $propagate_dsn_if_possible = 1; 224# $terminate_dsn_on_notify_success = 0; 225 226# $newvirus_admin = undef; 227# $virus_admin = undef; 228# $spam_admin = undef; 229# $banned_admin = undef; 230# $bad_header_admin = undef; 231 232# $dsn_bcc = undef; 233 234# @newvirus_admin_maps = (\$newvirus_admin); 235# @virus_admin_maps = (\%virus_admin, \$virus_admin); 236# @banned_admin_maps = (\$banned_admin); 237# @spam_admin_maps = (\%spam_admin, \$spam_admin); 238# @bad_header_admin_maps = (\$bad_header_admin); 239 240# $hdr_encoding = 'UTF-8'; # header field bodies charset 241# $bdy_encoding = 'UTF-8'; # notification body text charset 242# $hdr_encoding_qb = 'Q'; # quoted-printable (Q or B) 243 244# $notify_sender_templ = ... built-in default at the end of file amavisd 245# $notify_virus_sender_templ = ... built-in default at the end of file amavisd 246# $notify_spam_sender_templ = ... built-in default at the end of file amavisd 247# $notify_virus_admin_templ = ... built-in default at the end of file amavisd 248# $notify_spam_admin_templ = ... built-in default at the end of file amavisd 249# $notify_virus_recips_templ = ... built-in default at the end of file amavisd 250# $notify_spam_recips_templ = ... built-in default at the end of file amavisd 251# $notify_release_templ = ... built-in default at the end of file amavisd 252# $notify_report_templ = ... built-in default at the end of file amavisd 253 254# $mailfrom_notify_admin = undef; 255# $mailfrom_notify_recip = undef; 256# $mailfrom_notify_spamadmin = undef; 257 258## these are after-defaults: 259# $hdrfrom_notify_sender = "\"Content-filter at $myhostname\" <postmaster\@$myhostname>"; 260# $hdrfrom_notify_recip = ... derived from $mailfrom_notify_recip 261# $hdrfrom_notify_admin = ... derived from $mailfrom_notify_admin 262# $hdrfrom_notify_spamadmin = ... derived from $mailfrom_notify_spamadmin 263# $hdrfrom_notify_release = $hdrfrom_notify_sender; 264# $hdrfrom_notify_report = $hdrfrom_notify_sender; 265 266# $warnbannedsender = undef; 267# $warnbadhsender = undef; 268 269# $warn_offsite = undef; 270 271# $warnvirusrecip = undef; 272# $warnbannedrecip = undef; 273# $warnbadhrecip = undef; 274# @warnvirusrecip_maps = (\$warnvirusrecip); 275# @warnbannedrecip_maps = (\$warnbannedrecip); 276# @warnbadhrecip_maps = (\$warnbadhrecip); 277 278 279## MODIFICATIONS TO PASSED MAIL 280 281# %allowed_added_header_fields = ...; # built-in default 282# %prefer_our_added_header_fields = ...; # built-in default 283# $remove_existing_x_scanned_headers = 0; 284# $remove_existing_spam_headers = 1; 285# @remove_existing_spam_headers_maps = (\$remove_existing_spam_headers); 286# $allow_fixing_improper_header = 1; # all-white folding lines and long lines 287# $allow_fixing_improper_header_folding = 1; 288# $allow_fixing_long_header_lines = 1; 289# $prepend_header_fields_hdridx = 0; 290 291# $X_HEADER_TAG = 'X-Virus-Scanned'; # after-default 292# $X_HEADER_LINE = "$myproduct_name at $mydomain"; # after-default 293 294# $defang_virus = undef; 295# $defang_banned = undef; 296# $defang_spam = undef; 297# $defang_bad_header = undef; 298# $defang_undecipherable = undef; 299# $defang_all = undef; # mostly for testing 300 301# $allow_disclaimers = undef; 302# $outbound_disclaimers_only = undef; 303# $enable_anomy_sanitizer = 0; 304# @anomy_sanitizer_args = (); # a config file or list of var=value pairs 305# $altermime = 'altermime'; # a path to the program 306# @altermime_args_defang = qw(--verbose --removeall); 307# @altermime_args_disclaimer = qw(--disclaimer=/etc/altermime-disclaimer.txt); 308# @disclaimer_options_bysender_maps = (); 309 310# $undecipherable_subject_tag = '***UNCHECKED*** '; 311# $sa_spam_subject_tag = undef; 312# $sa_spam_level_char = '*'; 313 314# @spam_subject_tag_maps = (\$sa_spam_subject_tag1); # N.B.: inconsistent name 315# @spam_subject_tag2_maps = (\$sa_spam_subject_tag); # N.B.: inconsistent name 316# @spam_subject_tag3_maps = (); 317 318 319## ADDING ADDRESS EXTENSIONS TO RECIPIENTS - 'plus addressing' 320 321# $recipient_delimiter = undef; 322# $replace_existing_extension = 1; 323# $addr_extension_virus = undef; 324# $addr_extension_banned = undef; 325# $addr_extension_spam = undef; 326# $addr_extension_bad_header = undef; 327# @addr_extension_virus_maps = (\$addr_extension_virus); 328# @addr_extension_banned_maps = (\$addr_extension_banned); 329# @addr_extension_spam_maps = (\$addr_extension_spam); 330# @addr_extension_bad_header_maps = (\$addr_extension_bad_header); 331 332 333## MAIL DECODING 334 335# $bypass_decode_parts = undef; 336 337# $keep_decoded_original_re = undef; 338# @keep_decoded_original_maps = (\$keep_decoded_original_re); 339 340# $map_full_type_to_short_type_re = ... predefined lookup table, see source 341# @map_full_type_to_short_type_maps = (\$map_full_type_to_short_type_re); 342 343# $MAXLEVELS = undef; 344# $MAXFILES = undef; 345# $MIN_EXPANSION_QUOTA = undef; 346# $MAX_EXPANSION_QUOTA = undef; 347# $MIN_EXPANSION_FACTOR = 5; # times original mail size 348# $MAX_EXPANSION_FACTOR = 500; # times original mail size 349 350# $path = undef; 351# $file = 'file'; 352 353# For backward compatibility the @decoders list defaults to use of legacy 354# variables $gzip, $bzip2, $lzop, ... It is cleaner to explicitly assign 355# a list to @decoders in amavisd.conf and directly specify program paths, 356# without indirections through legacy variables $gzip, etc. 357# 358# $gzip = $bzip2 = $lzop = $rpm2cpio = undef; 359# $uncompress = $unfreeze = $arc = $unarj = $unrar = undef; 360# $zoo = $lha = $pax = $cpio = $cabextract = undef; 361# 362# @decoders = ( 363# ['mail', \&do_mime_decode], 364### [[qw(asc uue hqx ync)], \&do_ascii], # not safe 365# ['F', \&do_uncompress, \$unfreeze], 366# ['Z', \&do_uncompress, \$uncompress], 367# ['gz', \&do_uncompress, \$gunzip], 368# ['gz', \&do_gunzip], 369# ['bz2', \&do_uncompress, \$bunzip2], 370# ['xz', \&do_uncompress, 371# ['xzdec', 'xz -dc', 'unxz -c', 'xzcat'] ], 372# ['lzma', \&do_uncompress, 373# ['lzmadec', 'xz -dc --format=lzma', 374# 'lzma -dc', 'unlzma -c', 'lzcat', 'lzmadec'] ], 375# ['lrz', \&do_uncompress, 376# ['lrzip -q -k -d -o -', 'lrzcat -q -k'] ], 377# ['lzo', \&do_uncompress, \$unlzop], 378# ['lz4', \&do_uncompress, ['lz4c -d'] ], 379# ['rpm', \&do_uncompress, \$rpm2cpio], 380# [['cpio','tar'], \&do_pax_cpio, \$pax], 381### ['tar', \&do_tar], # no longer supported 382# ['deb', \&do_ar, \$ar], 383### ['a', \&do_ar, \$ar], # unpacking .a seems an overkill 384# ['rar', \&do_unrar, \$unrar], 385# ['arj', \&do_unarj, \$unarj], 386# ['arc', \&do_arc, \$arc], 387# ['zoo', \&do_zoo, \$zoo], 388# ['doc', \&do_ole, \$ripole], 389# ['cab', \&do_cabextract, \$cabextract], 390# ['tnef', \&do_tnef_ext, \$tnef], 391# ['tnef', \&do_tnef], 392### ['lha', \&do_lha, \$lha], # not safe, use 7z instead 393### ['sit', \&do_unstuff, \$unstuff], # not safe 394# [['zip','kmz'], \&do_7zip, ['7za', '7z'] ], 395# [['zip','kmz'], \&do_unzip], 396# ['7z', \&do_7zip, ['7zr', '7za', '7z'] ], 397# [[qw(gz bz2 Z tar)], 398# \&do_7zip, ['7za', '7z'] ], 399# [[qw(xz lzma jar cpio arj rar swf lha iso cab deb rpm)], 400# \&do_7zip, '7z' ], 401# ['exe', \&do_executable, \$unrar, \$lha, \$unarj], 402# ); 403 404 405## ANTI-VIRUS AND INVALID/FORBIDDEN CONTENTS CONTROLS 406 407# @av_scanners = (); 408# @av_scanners_backup = (); 409# $first_infected_stops_scan = undef; 410# $virus_scanners_failure_is_fatal = undef; 411 412# $viruses_that_fake_sender_re = undef; 413# @viruses_that_fake_sender_maps = (\$viruses_that_fake_sender_re, 1); 414# @virus_name_to_policy_bank_maps = (); 415# 416# @virus_name_to_spam_score_maps = 417# (new_RE( # the order matters, first match wins 418# [ qr'^Structured\.(SSN|CreditCardNumber)\b' => 0.1 ], 419# [ qr'^(Heuristics\.)?Phishing\.' => 0.1 ], 420# [ qr'^(Email|HTML)\.Phishing\.(?!.*Sanesecurity)' => 0.1 ], 421# [ qr'^Sanesecurity\.(Malware|Rogue|Trojan)\.' => undef ],# keep as infected 422# [ qr'^Sanesecurity\.Foxhole\.Zip_exe' => 0.1 ], # F.P. 423# [ qr'^Sanesecurity\.Foxhole\.' => undef ],# keep as infected 424# [ qr'^Sanesecurity\.' => 0.1 ], 425# [ qr'^Sanesecurity_PhishBar_' => 0 ], 426# [ qr'^Sanesecurity.TestSig_' => 0 ], 427# [ qr'^Email\.Spam\.Bounce(\.[^., ]*)*\.Sanesecurity\.' => 0 ], 428# [ qr'^Email\.Spammail\b' => 0.1 ], 429# [ qr'^MSRBL-(Images|SPAM)\b' => 0.1 ], 430# [ qr'^VX\.Honeypot-SecuriteInfo\.com\.Joke' => 0.1 ], 431# [ qr'^VX\.not-virus_(Hoax|Joke)\..*-SecuriteInfo\.com(\.|\z)' => 0.1 ], 432# [ qr'^Email\.Spam.*-SecuriteInfo\.com(\.|\z)' => 0.1 ], 433# [ qr'^Safebrowsing\.' => 0.1 ], 434# [ qr'^winnow\.(phish|spam)\.' => 0.1 ], 435# [ qr'^INetMsg\.SpamDomain' => 0.1 ], 436# [ qr'^Doppelstern\.(Spam|Scam|Phishing|Junk|Lott|Loan)'=> 0.1 ], 437# [ qr'^Bofhland\.Phishing' => 0.1 ], 438# [ qr'^ScamNailer\.' => 0.1 ], 439# [ qr'^HTML/Bankish' => 0.1 ], # F-Prot 440# [ qr'^PORCUPINE_JUNK' => 0.1 ], 441# [ qr'^PORCUPINE_PHISHING' => 0.1 ], 442# [ qr'^Porcupine\.Junk' => 0.1 ], 443# [ qr'^PhishTank\.Phishing\.' => 0.1 ], 444# [ qr'-SecuriteInfo\.com(\.|\z)' => undef ], # keep as infected 445# [ qr'^MBL_NA\.UNOFFICIAL' => 0.1 ], # false positives 446# [ qr'^MBL_' => undef ], # keep as infected 447# )); 448 449# @banned_filename_maps = ( 'DEFAULT' ); 450# %banned_rules = ( 'DEFAULT' => $banned_filename_re); # after-default 451# $banned_filename_re = undef; # traditional 452# $banned_namepath_re = undef; # regexp-style 453 454# @bypass_virus_checks_maps = (\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); 455# @bypass_banned_checks_maps = (\%bypass_banned_checks, \@bypass_banned_checks_acl, \$bypass_banned_checks_re); 456# @bypass_header_checks_maps = (\%bypass_header_checks, \@bypass_header_checks_acl, \$bypass_header_checks_re); 457 458# @virus_lovers_maps = (\%virus_lovers, \@virus_lovers_acl, \$virus_lovers_re); 459# @banned_files_lovers_maps = (\%banned_files_lovers, \@banned_files_lovers_acl, \$banned_files_lovers_re); 460# @bad_header_lovers_maps = (\%bad_header_lovers, \@bad_header_lovers_acl, \$bad_header_lovers_re); 461# @unchecked_lovers_maps = (); 462 463# $allowed_header_tests{$_} = 1 for qw(other mime 8bit control empty long 464# syntax missing multiple); 465 466 467## ANTI-Spam CONTROLS 468 469# @spam_scanners = ( ['SpamAssassin', 'Amavis::SpamControl::SpamAssassin'] ); 470 471# $helpers_home = $MYHOME; # after-default 472# $sa_configpath = undef; 473# $sa_siteconfigpath = undef; 474# $sa_num_instances = 1; 475# @sa_userconf_maps = (); 476# @sa_username_maps = (); 477 478# $sa_mail_body_size_limit = undef; 479# $sa_local_tests_only = 0; 480# $sa_spawned = 0; 481# $dspam = undef; 482 483# $sa_timeout = 30; 484 485# @bypass_spam_checks_maps = (\%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re); 486# @spam_lovers_maps = (\%spam_lovers, \@spam_lovers_acl, \$spam_lovers_re); 487 488# $sa_tag_level_deflt = undef; 489# $sa_tag2_level_deflt = undef; 490# $sa_tag3_level_deflt = undef; 491# $sa_kill_level_deflt = undef; 492# $sa_dsn_cutoff_level = undef; 493# $sa_crediblefrom_dsn_cutoff_level = undef; 494# $sa_quarantine_cutoff_level = undef; 495 496# @spam_tag_level_maps = (\$sa_tag_level_deflt); 497# @spam_tag2_level_maps = (\$sa_tag2_level_deflt); 498# @spam_tag3_level_maps = (\$sa_tag3_level_deflt); 499# @spam_kill_level_maps = (\$sa_kill_level_deflt); 500# @spam_quarantine_cutoff_level_maps = (\$sa_quarantine_cutoff_level); 501# @spam_notifyadmin_cutoff_level_maps = (); 502# @spam_dsn_cutoff_level_maps = (\$sa_dsn_cutoff_level); 503# @spam_dsn_cutoff_level_bysender_maps = (\$sa_dsn_cutoff_level); 504# @spam_crediblefrom_dsn_cutoff_level_maps = 505# (\$sa_crediblefrom_dsn_cutoff_level); 506# @spam_crediblefrom_dsn_cutoff_level_bysender_maps = 507# (\$sa_crediblefrom_dsn_cutoff_level); 508 509# $bounce_killer_score = 0; 510 511# $penpals_bonus_score = undef; 512# $penpals_halflife = 7*24*60*60; 513# $penpals_threshold_low = 1.0; 514# $penpals_threshold_high = undef; 515 516# $reputation_factor = 0.2; 517 518# @score_sender_maps = (); 519# @signer_reputation_maps = (); 520 521# @blacklist_sender_maps = (\%blacklist_sender, \@blacklist_sender_acl, \$blacklist_sender_re); 522# @whitelist_sender_maps = (\%whitelist_sender, \@whitelist_sender_acl, \$whitelist_sender_re); 523 524# $per_recip_blacklist_sender_lookup_tables = undef; 525# $per_recip_whitelist_sender_lookup_tables = undef; # deprecated 526 527# $os_fingerprint_method = undef; 528# $os_fingerprint_dst_ip_and_port = undef; 529 530 531## SQL, LDAP, Redis 532 533# $database_sessions_persistent = 1; 534# $trim_trailing_space_in_lookup_result_fields = 0; 535# $lookup_maps_imply_sql_and_ldap = 1; 536 537# @storage_redis_dsn = (); # Redis server(s) for pen pals, IP reput, JSON log 538# $storage_redis_ttl = 16*24*60*60; 539# $enable_ip_repu = 1; 540# @ip_repu_ignore_networks = (); 541# @ip_repu_ignore_maps = (\@ip_repu_ignore_networks); 542# $redis_logging_key = undef; 543# $redis_logging_queue_size_limit = undef; 544 545# @lookup_sql_dsn = (); # SQL data source name for lookups, or empty 546# @storage_sql_dsn = (); # SQL data source name for log/quarantine, or empty 547 548# $sql_store_info_for_all_msgs = 1; 549# $sql_schema_version = $myversion_id_numeric; 550# $timestamp_fmt_mysql = undef; 551# $sql_partition_tag = undef; 552# $sql_allow_8bit_address = 0; # VARCHAR (0), VARBINARY/BYTEA (1) 553# $sql_lookups_no_at_means_domain = 0; 554# $sql_quarantine_chunksize_max = 16384; 555 556# $sql_select_policy = 557# 'SELECT *,users.id'. 558# ' FROM users LEFT JOIN policy ON users.policy_id=policy.id'. 559# ' WHERE users.email IN (%k) ORDER BY users.priority DESC'; 560 561# $sql_select_white_black_list = 562# 'SELECT wb'. 563# ' FROM wblist JOIN mailaddr ON wblist.sid=mailaddr.id'. 564# ' WHERE wblist.rid=? AND mailaddr.email IN (%k)'. 565# ' ORDER BY mailaddr.priority DESC'; 566 567# %sql_clause = ( 568# 'sel_policy' => \$sql_select_policy, 569# 'sel_wblist' => \$sql_select_white_black_list, 570# 'sel_adr' => 571# 'SELECT id FROM maddr WHERE partition_tag=? AND email=?', 572# 'ins_adr' => 573# 'INSERT INTO maddr (partition_tag, email, domain) VALUES (?,?,?)', 574# 'ins_msg' => 575# 'INSERT INTO msgs (partition_tag, mail_id, secret_id, am_id,'. 576# ' time_num, time_iso, sid, policy, client_addr, size, host)'. 577# ' VALUES (?,?,?,?,?,?,?,?,?,?,?)', 578# 'upd_msg' => 579# 'UPDATE msgs SET content=?, quar_type=?, quar_loc=?, dsn_sent=?,'. 580# ' spam_level=?, message_id=?, from_addr=?, subject=?, client_addr=?,'. 581# ' originating=?'. 582# ' WHERE partition_tag=? AND mail_id=?', 583# 'ins_rcp' => 584# 'INSERT INTO msgrcpt (partition_tag, mail_id, rseqnum, rid, is_local,'. 585# ' content, ds, rs, bl, wl, bspam_level, smtp_resp)'. 586# ' VALUES (?,?,?,?,?,?,?,?,?,?,?,?)', 587# 'ins_quar' => 588# 'INSERT INTO quarantine (partition_tag, mail_id, chunk_ind, mail_text)'. 589# ' VALUES (?,?,?,?)', 590# 'sel_msg' => # obtains partition_tag if missing in a release request 591# 'SELECT partition_tag FROM msgs WHERE mail_id=?', 592# 'sel_quar' => 593# 'SELECT mail_text FROM quarantine'. 594# ' WHERE partition_tag=? AND mail_id=?'. 595# ' ORDER BY chunk_ind', 596# 'sel_penpals' => # no message-id references list 597# "SELECT msgs.time_num, msgs.mail_id, subject". 598# " FROM msgs JOIN msgrcpt USING (partition_tag,mail_id)". 599# " WHERE sid=? AND rid=? AND msgs.content!='V' AND ds='P'". 600# " ORDER BY msgs.time_num DESC", # LIMIT 1 601# 'sel_penpals_msgid' => # with a nonempty list of message-id references 602# "SELECT msgs.time_num, msgs.mail_id, subject, message_id, rid". 603# " FROM msgs JOIN msgrcpt USING (partition_tag,mail_id)". 604# " WHERE sid=? AND msgs.content!='V' AND ds='P' AND message_id IN (%m)". 605# " AND rid!=sid". 606# " ORDER BY rid=? DESC, msgs.time_num DESC", # LIMIT 1 607# ); 608 609## LDAP, Please see file README.lookups for more info. 610 611# $enable_ldap = 0; 612# $ldap_lookups_no_at_means_domain = 0; 613# 614# $default_ldap = { 615# hostname => 'localhost', 616# localaddr => undef, 617# port => undef, # 389 or 636, default provided by Net::LDAP 618# scheme => undef, # 'ldaps' or 'ldap', depending on hostname 619# inet6 => $have_inet6 ? 1 : 0, 620# version => 3, 621# timeout => 120, 622# deref => 'find', 623# bind_dn => undef, 624# bind_password => undef, 625# tls => 0, 626# verify => 'none', 627# sslversion => 'tlsv1', 628# clientcert => undef, 629# clientkey => undef, 630# cafile => undef, 631# capath => undef, 632# sasl => 0, 633# sasl_mech => undef, # space-separated list of mech names 634# sasl_auth_id => undef, 635# }; 636 637 638## hierarchy by which a final setting is chosen: 639## policy bank (based on port or IP address) -> *_by_ccat 640## *_by_ccat (based on mail contents) -> *_maps 641## *_maps (based on recipient address) -> final configuration value 642 643 644## MAPPING A CONTENTS CATEGORY TO A SETTING CHOSEN 645 646# %final_destiny_maps_by_ccat = ( 647# # value is normally a list of by-recipient lookup tables, but for compa- 648# # tibility with old %final_destiny_by_ccat a value may also be a scalar 649# CC_VIRUS, sub { c('final_virus_destiny') }, 650# CC_BANNED, sub { c('final_banned_destiny') }, 651# CC_UNCHECKED, sub { c('final_unchecked_destiny') }, 652# CC_SPAM, sub { c('final_spam_destiny') }, 653# CC_BADH, sub { c('final_bad_header_destiny') }, 654# CC_MTA.',1', D_TEMPFAIL, # MTA response was 4xx 655# CC_MTA.',2', D_REJECT, # MTA response was 5xx 656# CC_MTA, D_TEMPFAIL, 657# CC_OVERSIZED, D_BOUNCE, 658# CC_CATCHALL, D_PASS, 659# ); 660# %forward_method_maps_by_ccat = ( 661# CC_CATCHALL, sub { ca('forward_method_maps') }, 662# ); 663# %smtp_reason_by_ccat = ( 664# # currently only used for blocked messages only, status 5xx 665# # a multiline message will produce a valid multiline SMTP response 666# CC_VIRUS, 'id=%n - INFECTED: %V', 667# CC_BANNED, 'id=%n - BANNED: %F', 668# CC_UNCHECKED.',1', 'id=%n - UNCHECKED: encrypted', 669# CC_UNCHECKED.',2', 'id=%n - UNCHECKED: over limits', 670# CC_UNCHECKED, 'id=%n - UNCHECKED', 671# CC_SPAM, 'id=%n - spam', 672# CC_SPAMMY.',1', 'id=%n - spammy (tag3)', 673# CC_SPAMMY, 'id=%n - spammy', 674# CC_BADH.',1', 'id=%n - BAD HEADER: MIME error', 675# CC_BADH.',2', 'id=%n - BAD HEADER: nonencoded 8-bit character', 676# CC_BADH.',3', 'id=%n - BAD HEADER: contains invalid control character', 677# CC_BADH.',4', 'id=%n - BAD HEADER: line made up entirely of whitespace', 678# CC_BADH.',5', 'id=%n - BAD HEADER: line longer than RFC 5322 limit', 679# CC_BADH.',6', 'id=%n - BAD HEADER: syntax error', 680# CC_BADH.',7', 'id=%n - BAD HEADER: missing required header field', 681# CC_BADH.',8', 'id=%n - BAD HEADER: duplicate header field', 682# CC_BADH, 'id=%n - BAD HEADER', 683# CC_OVERSIZED, 'id=%n - Message size exceeds recipient\'s size limit', 684# CC_MTA.',1', 'id=%n - Temporary MTA failure on relaying', 685# CC_MTA.',2', 'id=%n - Rejected by next-hop MTA on relaying', 686# CC_MTA, 'id=%n - Unable to relay message back to MTA', 687# CC_CLEAN, 'id=%n - CLEAN', 688# CC_CATCHALL, 'id=%n - OTHER', # should not happen 689# ); 690# %lovers_maps_by_ccat = ( 691# CC_VIRUS, sub { ca('virus_lovers_maps') }, 692# CC_BANNED, sub { ca('banned_files_lovers_maps') }, 693# CC_UNCHECKED, sub { ca('unchecked_lovers_maps') }, 694# CC_SPAM, sub { ca('spam_lovers_maps') }, 695# CC_SPAMMY, sub { ca('spam_lovers_maps') }, 696# CC_BADH, sub { ca('bad_header_lovers_maps') }, 697# ); 698# %defang_maps_by_ccat = ( 699# # compatible with legacy %defang_by_ccat: value may be a scalar 700# CC_VIRUS, sub { c('defang_virus') }, 701# CC_BANNED, sub { c('defang_banned') }, 702# CC_UNCHECKED, sub { c('defang_undecipherable') }, 703# CC_SPAM, sub { c('defang_spam') }, 704# CC_SPAMMY, sub { c('defang_spam') }, 705# # CC_BADH.',3', 1, # NUL or CR character in header section 706# # CC_BADH.',5', 1, # header line longer than 998 characters 707# # CC_BADH.',6', 1, # header field syntax error 708# CC_BADH, sub { c('defang_bad_header') }, 709# ); 710# %subject_tag_maps_by_ccat = ( 711# CC_VIRUS, [ '***INFECTED*** ' ], 712# CC_BANNED, undef, 713# CC_UNCHECKED, sub { [ c('undecipherable_subject_tag') ] }, # not by-recip 714# CC_SPAM, undef, 715# CC_SPAMMY.',1', sub { ca('spam_subject_tag3_maps') }, 716# CC_SPAMMY, sub { ca('spam_subject_tag2_maps') }, 717# CC_CLEAN.',1', sub { ca('spam_subject_tag_maps') }, 718# ); 719# %quarantine_method_by_ccat = ( 720# CC_VIRUS, sub { c('virus_quarantine_method') }, 721# CC_BANNED, sub { c('banned_files_quarantine_method') }, 722# CC_UNCHECKED, sub { c('unchecked_quarantine_method') }, 723# CC_SPAM, sub { c('spam_quarantine_method') }, 724# CC_BADH, sub { c('bad_header_quarantine_method') }, 725# CC_CLEAN, sub { c('clean_quarantine_method') }, 726# ); 727# %quarantine_to_maps_by_ccat = ( 728# CC_VIRUS, sub { ca('virus_quarantine_to_maps') }, 729# CC_BANNED, sub { ca('banned_quarantine_to_maps') }, 730# CC_UNCHECKED, sub { ca('unchecked_quarantine_to_maps') }, 731# CC_SPAM, sub { ca('spam_quarantine_to_maps') }, 732# CC_BADH, sub { ca('bad_header_quarantine_to_maps') }, 733# CC_CLEAN, sub { ca('clean_quarantine_to_maps') }, 734# ); 735# %admin_maps_by_ccat = ( 736# CC_VIRUS, sub { ca('virus_admin_maps') }, 737# CC_BANNED, sub { ca('banned_admin_maps') }, 738# CC_UNCHECKED, sub { ca('virus_admin_maps') }, 739# CC_SPAM, sub { ca('spam_admin_maps') }, 740# CC_BADH, sub { ca('bad_header_admin_maps') }, 741# ); 742# %always_bcc_by_ccat = ( 743# CC_CATCHALL, sub { c('always_bcc') }, 744# ); 745# %dsn_bcc_by_ccat = ( 746# CC_CATCHALL, sub { c('dsn_bcc') }, 747# ); 748# %mailfrom_notify_admin_by_ccat = ( 749# CC_SPAM, sub { c('mailfrom_notify_spamadmin') }, 750# CC_CATCHALL, sub { c('mailfrom_notify_admin') }, 751# ); 752# %hdrfrom_notify_admin_by_ccat = ( 753# CC_SPAM, sub { c('hdrfrom_notify_spamadmin') }, 754# CC_CATCHALL, sub { c('hdrfrom_notify_admin') }, 755# ); 756# %mailfrom_notify_recip_by_ccat = ( 757# CC_CATCHALL, sub { c('mailfrom_notify_recip') }, 758# ); 759# %hdrfrom_notify_recip_by_ccat = ( 760# CC_CATCHALL, sub { c('hdrfrom_notify_recip') }, 761# ); 762# %hdrfrom_notify_sender_by_ccat = ( 763# CC_CATCHALL, sub { c('hdrfrom_notify_sender') }, 764# ); 765# %hdrfrom_notify_release_by_ccat = ( 766# CC_CATCHALL, sub { c('hdrfrom_notify_release') }, 767# ); 768# %hdrfrom_notify_report_by_ccat = ( 769# CC_CATCHALL, sub { c('hdrfrom_notify_report') }, 770# ); 771# %notify_admin_templ_by_ccat = ( 772# CC_SPAM, sub { cr('notify_spam_admin_templ') }, 773# CC_CATCHALL, sub { cr('notify_virus_admin_templ') }, 774# ); 775# %notify_recips_templ_by_ccat = ( 776# CC_SPAM, sub { cr('notify_spam_recips_templ') }, #usually empty 777# CC_CATCHALL, sub { cr('notify_virus_recips_templ') }, 778# ); 779# %notify_sender_templ_by_ccat = ( # bounce templates 780# CC_VIRUS, sub { cr('notify_virus_sender_templ') }, 781# CC_BANNED, sub { cr('notify_virus_sender_templ') }, #historical reason 782# CC_SPAM, sub { cr('notify_spam_sender_templ') }, 783# CC_CATCHALL, sub { cr('notify_sender_templ') }, 784# ); 785# %notify_release_templ_by_ccat = ( 786# CC_CATCHALL, sub { cr('notify_release_templ') }, 787# ); 788# %notify_report_templ_by_ccat = ( 789# CC_CATCHALL, sub { cr('notify_report_templ') }, 790# ); 791# %notify_autoresp_templ_by_ccat = ( 792# CC_CATCHALL, sub { cr('notify_autoresp_templ') }, 793# ); 794# %warnsender_by_ccat = ( # deprecated use, except perhaps for CC_BADH 795# CC_VIRUS, undef, 796# CC_BANNED, sub { c('warnbannedsender') }, 797# CC_SPAM, undef, 798# CC_BADH, sub { c('warnbadhsender') }, 799# ); 800# %warnrecip_maps_by_ccat = ( 801# CC_VIRUS, sub { ca('warnvirusrecip_maps') }, 802# CC_BANNED, sub { ca('warnbannedrecip_maps') }, 803# CC_SPAM, undef, 804# CC_BADH, sub { ca('warnbadhrecip_maps') }, 805# ); 806# %addr_extension_maps_by_ccat = ( 807# CC_VIRUS, sub { ca('addr_extension_virus_maps') }, 808# CC_BANNED, sub { ca('addr_extension_banned_maps') }, 809# CC_SPAM, sub { ca('addr_extension_spam_maps') }, 810# CC_SPAMMY, sub { ca('addr_extension_spam_maps') }, 811# CC_BADH, sub { ca('addr_extension_bad_header_maps') }, 812# # CC_OVERSIZED, 'oversized'; 813# ); 814# %addr_rewrite_maps_by_ccat = ( ); 815 816 817## POLICY BANKS 818 819# %interface_policy = (); # maps input interface/port to policy bank name 820 821# $policy_bank{''} = { ...predefined... }; 822 823 ## the built-in policy bank (empty name) is predefined, and includes 824 ## references to most other variables listed above (the dynamic config 825 ## variables), which are accessed only indirectly through the currently 826 ## installed policy bank. Overlaying a policy bank with another policy 827 ## bank may bring-in references to entirely different variables, 828 ## possibly unnamed. Here is a list of configuration variables 829 ## referenced from the built-in policy bank by keys of the same name 830 ## (e.g. { log_level => \$log_level, inet_acl => \@inet_acl, ...} ) 831 ## 832 ## $child_timeout $smtpd_timeout 833 ## $policy_bank_name $protocol $haproxy_target_enabled @inet_acl 834 ## $myhostname $myauthservid $snmp_contact $snmp_location 835 ## $myprogram_name $syslog_ident $syslog_facility 836 ## $log_level $log_templ $log_recip_templ $enable_log_capture_dump 837 ## $forward_method $notify_method $resend_method $report_format 838 ## $release_method $requeue_method $release_format 839 ## $attachment_password $attachment_email_name $attachment_outer_name 840 ## $mail_digest_algorithm $mail_part_digest_algorithm 841 ## $os_fingerprint_method $os_fingerprint_dst_ip_and_port 842 ## $originating @smtpd_discard_ehlo_keywords $soft_bounce 843 ## $propagate_dsn_if_possible $terminate_dsn_on_notify_success 844 ## $amavis_auth_user $amavis_auth_pass $auth_reauthenticate_forwarded 845 ## $auth_required_out $auth_required_inp $auth_required_release 846 ## @auth_mech_avail $tls_security_level_in $tls_security_level_out 847 ## $local_client_bind_address $smtpd_message_size_limit 848 ## $localhost_name $smtpd_greeting_banner $smtpd_quit_banner 849 ## $mailfrom_to_quarantine $warn_offsite $bypass_decode_parts @decoders 850 ## @av_scanners @av_scanners_backup @spam_scanners 851 ## $first_infected_stops_scan $virus_scanners_failure_is_fatal 852 ## $sa_spam_level_char $sa_mail_body_size_limit 853 ## $penpals_bonus_score $penpals_halflife $bounce_killer_score 854 ## $reputation_factor 855 ## $undecipherable_subject_tag $localpart_is_case_sensitive 856 ## $recipient_delimiter $replace_existing_extension 857 ## $hdr_encoding $bdy_encoding $hdr_encoding_qb 858 ## $allow_disclaimers $outbound_disclaimers_only 859 ## $prepend_header_fields_hdridx 860 ## $allow_fixing_improper_header 861 ## $allow_fixing_improper_header_folding $allow_fixing_long_header_lines 862 ## %allowed_added_header_fields %prefer_our_added_header_fields 863 ## %allowed_header_tests 864 ## $X_HEADER_TAG $X_HEADER_LINE 865 ## $remove_existing_x_scanned_headers $remove_existing_spam_headers 866 ## %sql_clause $partition_tag 867 ## %local_delivery_aliases $banned_namepath_re 868 ## $per_recip_whitelist_sender_lookup_tables 869 ## $per_recip_blacklist_sender_lookup_tables 870 ## @anomy_sanitizer_args @altermime_args_defang 871 ## @altermime_args_disclaimer @disclaimer_options_bysender_maps 872 ## %signed_header_fields @dkim_signature_options_bysender_maps 873 ## $enable_dkim_verification $enable_dkim_signing $dkim_signing_service 874 ## $dkim_minimum_key_bits $enable_ldap $enable_ip_repu $redis_logging_key 875 ## 876 ## @local_domains_maps 877 ## @mynetworks_maps @client_ipaddr_policy @ip_repu_ignore_maps 878 ## @forward_method_maps @newvirus_admin_maps @banned_filename_maps 879 ## @spam_quarantine_bysender_to_maps 880 ## @spam_tag_level_maps @spam_tag2_level_maps @spam_tag3_level_maps 881 ## @spam_kill_level_maps 882 ## @spam_subject_tag_maps @spam_subject_tag2_maps @spam_subject_tag3_maps 883 ## @spam_dsn_cutoff_level_maps @spam_dsn_cutoff_level_bysender_maps 884 ## @spam_crediblefrom_dsn_cutoff_level_maps 885 ## @spam_crediblefrom_dsn_cutoff_level_bysender_maps 886 ## @spam_quarantine_cutoff_level_maps @spam_notifyadmin_cutoff_level_maps 887 ## @whitelist_sender_maps @blacklist_sender_maps @score_sender_maps 888 ## @author_to_policy_bank_maps @signer_reputation_maps 889 ## @message_size_limit_maps @debug_sender_maps @debug_recipient_maps 890 ## @bypass_virus_checks_maps @bypass_spam_checks_maps 891 ## @bypass_banned_checks_maps @bypass_header_checks_maps 892 ## @viruses_that_fake_sender_maps 893 ## @virus_name_to_spam_score_maps @virus_name_to_policy_bank_maps 894 ## @remove_existing_spam_headers_maps 895 ## @sa_userconf_maps @sa_username_maps 896 ## 897 ## %final_destiny_maps_by_ccat %forward_method_maps_by_ccat 898 ## %lovers_maps_by_ccat %defang_maps_by_ccat %subject_tag_maps_by_ccat 899 ## %quarantine_method_by_ccat %quarantine_to_maps_by_ccat 900 ## %notify_admin_templ_by_ccat %notify_recips_templ_by_ccat 901 ## %notify_sender_templ_by_ccat %notify_autoresp_templ_by_ccat 902 ## %notify_release_templ_by_ccat %notify_report_templ_by_ccat 903 ## %warnsender_by_ccat 904 ## %hdrfrom_notify_admin_by_ccat %mailfrom_notify_admin_by_ccat 905 ## %hdrfrom_notify_recip_by_ccat %mailfrom_notify_recip_by_ccat 906 ## %hdrfrom_notify_sender_by_ccat 907 ## %hdrfrom_notify_release_by_ccat %hdrfrom_notify_report_by_ccat 908 ## %admin_maps_by_ccat %warnrecip_maps_by_ccat 909 ## %always_bcc_by_ccat %dsn_bcc_by_ccat 910 ## %addr_extension_maps_by_ccat %addr_rewrite_maps_by_ccat 911 ## %smtp_reason_by_ccat 912 913 # legacy dynamic configuration variables: 914 915 ## $final_virus_destiny $final_banned_destiny $final_unchecked_destiny 916 ## $final_spam_destiny $final_bad_header_destiny 917 ## @virus_lovers_maps @spam_lovers_maps @unchecked_lovers_maps 918 ## @banned_files_lovers_maps @bad_header_lovers_maps 919 ## $always_bcc $dsn_bcc 920 ## $mailfrom_notify_sender $mailfrom_notify_recip 921 ## $mailfrom_notify_admin $mailfrom_notify_spamadmin 922 ## $hdrfrom_notify_sender $hdrfrom_notify_recip 923 ## $hdrfrom_notify_admin $hdrfrom_notify_spamadmin 924 ## $hdrfrom_notify_release $hdrfrom_notify_report 925 ## $notify_virus_admin_templ $notify_spam_admin_templ 926 ## $notify_virus_recips_templ $notify_spam_recips_templ 927 ## $notify_virus_sender_templ $notify_spam_sender_templ 928 ## $notify_sender_templ $notify_release_templ 929 ## $notify_report_templ $notify_autoresp_templ 930 ## $warnbannedsender $warnbadhsender 931 ## $defang_virus $defang_banned $defang_spam 932 ## $defang_bad_header $defang_undecipherable $defang_all 933 ## $virus_quarantine_method $banned_files_quarantine_method 934 ## $unchecked_quarantine_method $spam_quarantine_method 935 ## $bad_header_quarantine_method $clean_quarantine_method 936 ## $archive_quarantine_method 937 ## @virus_quarantine_to_maps @banned_quarantine_to_maps 938 ## @unchecked_quarantine_to_maps @spam_quarantine_to_maps 939 ## @bad_header_quarantine_to_maps @clean_quarantine_to_maps 940 ## @archive_quarantine_to_maps 941 ## @virus_admin_maps @banned_admin_maps 942 ## @spam_admin_maps @bad_header_admin_maps @spam_modifies_subj_maps 943 ## @warnvirusrecip_maps @warnbannedrecip_maps @warnbadhrecip_maps 944 ## @addr_extension_virus_maps @addr_extension_spam_maps 945 ## @addr_extension_banned_maps @addr_extension_bad_header_maps 946 9471; # insure a defined return value 948