divert(-1) # # Copyright (c) 1983 Eric P. Allman # Copyright (c) 1988, 1993 # The Regents of the University of California. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. All advertising materials mentioning features or use of this software # must display the following acknowledgement: # This product includes software developed by the University of # California, Berkeley and its contributors. # 4. Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # # This is a generic configuration file for FreeBSD 5.X and later systems. # If you want to customize it, copy it to a name appropriate for your # environment and do the modifications there. # # The best documentation for this .mc file is: # /usr/share/sendmail/cf/README or # /usr/src/contrib/sendmail/cf/README # include(`/usr/share/sendmail/cf/m4/cf.m4')dnl OSTYPE(freebsd6) DOMAIN(generic) include(confMC_DIR`/sendmail-conf.default.inc.mc')dnl include(confSITE_DIR`/sendmail-conf.inc.mc')dnl HACK(`cfhead')dnl dnl FEATURE(access_db, `hash -o -T /etc/mail/access') HACK(`access_db_sequence', `access1', `hash -T -o /etc/mail/access.db')dnl HACK(`access_db_sequence', `access2', `hash -T -o /etc/mail/access2.db')dnl HACK(`access_db_sequence', `access3', `hash -T -o /etc/mail/access3.db')dnl HACK(`access_db_sequence', `access4', `hash -T -o /etc/mail/access4.db')dnl HACK(`access_db_sequence', `access5', `hash -T -o /etc/mail/access5.db')dnl FEATURE(`access_db', `sequence access1 access2 access3 access4 access5')dnl FEATURE(`delay_checks', `FRIEND')dnl FEATURE(blacklist_recipients) FEATURE(local_lmtp) FEATURE(mailertable, `hash -o /etc/mail/mailertable') FEATURE(virtusertable, `hash -o /etc/mail/virtusertable') dnl Uncomment to allow relaying based on your MX records. dnl NOTE: This can allow sites to use your server as a backup MX without dnl your permission. dnl FEATURE(relay_based_on_MX) dnl DNS based black hole lists dnl -------------------------------- dnl DNS based black hole lists come and go on a regular basis dnl so this file will not serve as a database of the available servers. dnl For that, visit dnl http://directory.google.com/Top/Computers/Internet/Abuse/Spam/Blacklists/ dnl Uncomment to activate Realtime Blackhole List dnl information available at http://www.mail-abuse.com/ dnl NOTE: This is a subscription service as of July 31, 2001 dnl FEATURE(dnsbl) dnl Alternatively, you can provide your own server and rejection message: dnl FEATURE(dnsbl, `blackholes.mail-abuse.org', `"550 Mail from " $&{client_addr} " rejected, see http://mail-abuse.org/cgi-bin/lookup?" $&{client_addr}') define(`DNSBL_MAP', `dns -R A') ifdef(`confDNSBL_CHECK', `ifelse(confDNSBL_CHECK, `YES', `dnl include(confSITE_DIR`/sendmail-dnsbl.inc.mc')dnl ')') ifdef(`confRFC_IGNORANT_CHECK', `ifelse(confRFC_IGNORANT_CHECK, `YES', `dnl include(confSITE_DIR`/sendmail-rfc-ignorant.inc.mc')dnl ')') dnl Dialup users should uncomment and define this appropriately dnl define(`SMART_HOST', `your.isp.mail.server') dnl Uncomment the first line to change the location of the default dnl /etc/mail/local-host-names and comment out the second line. dnl define(`confCW_FILE', `-o /etc/mail/sendmail.cw') define(`confCW_FILE', `-o /etc/mail/local-host-names') dnl Enable for both IPv4 and IPv6 (optional) dnl DAEMON_OPTIONS(`Name=IPv4, Family=inet') dnl DAEMON_OPTIONS(`Name=IPv6, Family=inet6, Modifiers=O') ifdef(`confDAEMON_OPTS', confDAEMON_OPTS, ` DAEMON_OPTIONS(`Name=IPv4, Family=inet') ')dnl define(`confBIND_OPTS', `WorkAroundBrokenAAAA') define(`confNO_RCPT_ACTION', `add-to-undisclosed') define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun,nobodyreturn')dnl define(`confEIGHT_BIT_HANDLING', `pass8')dnl define(`confCOPY_ERRORS_TO', `errors')dnl define(`confOPERATORS', confOPERATORS`=?')dnl ifdef(`confMASQUERADE', `ifelse(confMASQUERADE, `NO', `dnl', `dnl include(confSITE_DIR`/sendmail-masquerade.inc.mc')dnl ')') EXPOSED_USER(`root')dnl dnl include(confSITE_DIR`/sendmail-queues.inc.mc')dnl ifdef(`confDEMIME_BODY', `ifelse(confDEMIME_BODY, `YES', `dnl MODIFY_MAILER_FLAGS(`LOCAL', `+9')dnl ',`dnl MODIFY_MAILER_FLAGS(`LOCAL', `-9')dnl ')') dnl MAILER(procmail)dnl MAILER(local) define(`SMTP_MAILER_FLAGS', `A8e')dnl MAILER(smtp) ifdef(`confUSE_UUCP', `ifelse(confUSE_UUCP, `YES', `dnl MAILER(uucp)dnl ')') dnl ifdef(`confVMAIL', `ifelse(confVMAIL, `YES', `dnl define(`confVMAIL_AUTH_RC', `/usr/lib/courier-imap/etc/authmysqlrc')dnl define(`confVMAIL_AUTH', `/usr/local/scripts/courier/checkuser.pl')dnl define(`VMAIL_MAILER_MAX', `2048000')dnl MAILER(vmail)dnl ')') dnl dnl ifdef(`confSKIP_RESOLVE_FOR_LOCAL', `ifelse(confSKIP_RESOLVE_FOR_LOCAL, `YES', `dnl dnl HACK(`skip_resolve_for_local')dnl dnl ')') dnl dnl ifdef(`confVERIFY_SENDER', `ifelse(confVERIFY_SENDER, `YES', `dnl dnl HACK(`verify_sender')dnl dnl ')') dnl ifdef(`confVERIFY_RECIPIENT', `ifelse(confVERIFY_RECIPIENT, `YES', `dnl dnl HACK(`verify_recipient')dnl dnl ')') dnl ifdef(`confVERIFY_SENDER_CHECK_HOST', `ifelse(confVERIFY_SENDER_CHECK_HOST, `YES', `dnl dnl HACK(`verify_sender_check_host', `!VerifySenderHost', `VERIFY', `VERIFY')dnl dnl dnl HACK(`verify_sender_check_host', `!VerifySenderHost', `OK', `SKIP')dnl dnl HACK(`verify_sender_check_host', `!VerifySenderHost', `SKIP', `SKIP')dnl dnl HACK(`verify_sender_check_host', `!VerifySenderHost', `REJECT', `REJECT')dnl dnl dnl HACK(`verify_sender_check_host', `+Connect', `RELAY', `SKIP')dnl dnl dnl HACK(`verify_sender_check_host', `+Connect', `OK', `SKIP')dnl dnl dnl HACK(`verify_sender_check_host', `+Connect', `REJECT', `REJECT')dnl dnl dnl HACK(`verify_sender_check_host', `', `OK', `SKIP')dnl dnl dnl HACK(`verify_sender_check_host', `', `REJECT', `REJECT')dnl dnl ')') dnl dnl ifdef(`confCHECK_RELAY_RESOLVE', `ifelse(confCHECK_RELAY_RESOLVE, `YES', `dnl dnl HACK(`check_relay_resolve')dnl dnl ')') dnl dnl ifdef(`confCHECK_RELAY_FORGED', `ifelse(confCHECK_RELAY_FORGED, `YES', `dnl dnl HACK(`check_relay_forged')dnl dnl ')') dnl dnl ifdef(`confCHECK_RELAY_DIALUP', `ifelse(confCHECK_RELAY_DIALUP, `NO', `', `dnl dnl HACK(`check_relay_dialup') dnl HACK(`check_relay_dialup_regex',``^(.+[\.\-])?(adsl|cable|client|dhcp|dial|dial-in|dial-up|dialup|dsl|dyn|dynamic|dyndsl|pool|ppp|user|xdsl)[\.\-_0-9].+'') dnl HACK(`check_relay_dialup_regex',``^.*[0-9]{1,3}[-\.][0-9]{1,3}[-\.][0-9]{1,3}[-\.][0-9]{1,3}[-\.].+$'') dnl HACK(`check_relay_dialup_regex',``^dyn-[0-9]{1,3}\.ci\.ukrpack\.net$'') dnl HACK(`check_relay_dialup_regex',``^bsd.in.falbi.kiev.ua$'',``regex test'') dnl ')') dnl dnl HACK(`check_mail_from')dnl dnl HACK(`check_rcpt_to')dnl dnl dnl ifdef(`confCHECK_HELO', `ifelse(confCHECK_HELO, `NO', `dnl', `dnl dnl HACK(`check_helo')dnl dnl HACK(`check_helo_dialup_regex',``^(.+[\.\-])?(adsl|cable|client|dhcp|dial|dial-in|dial-up|dialup|dsl|dyn|dynamic|dyndsl|pool|ppp|user|xdsl)[\.\-_0-9].+'') dnl HACK(`check_helo_dialup_regex',``^.*[0-9]{1,3}[-\.][0-9]{1,3}[-\.][0-9]{1,3}[-\.][0-9]{1,3}[-\.].+$'') dnl HACK(`check_helo_dialup_regex',``^dyn-[0-9]{1,3}\.ci\.ukrpack\.net$'') dnl HACK(`check_helo_dialup_regex',``^bsd.in.falbi.kiev.ua$'') dnl dnl dnl ifdef(`confCHECK_HELO_FAKE', `ifelse(confCHECK_HELO_FAKE, `YES', `dnl dnl dnl HACK(`check_helo', `google.com')dnl dnl HACK(`check_helo', `hotmail.com')dnl dnl HACK(`check_helo', `yahoo.com')dnl dnl HACK(`check_helo', `msn.com')dnl dnl HACK(`check_helo', `aol.com')dnl dnl HACK(`check_helo', `cnn.com')dnl dnl HACK(`check_helo', `compuserve.com')dnl dnl HACK(`check_helo', `rambler.ru')dnl dnl HACK(`check_helo', `mail.ru')dnl dnl HACK(`check_helo', `yandex.ru')dnl dnl HACK(`check_helo', `chat.ru')dnl dnl HACK(`check_helo', `gala.net')dnl dnl HACK(`check_helo', `galaradio.com')dnl dnl ')') dnl ')') dnl dnl ifdef(`confCHECK_HELO_FQDN', `ifelse(confCHECK_HELO_FQDN, `NO', `dnl', `dnl dnl HACK(`check_helo_fqdn')dnl dnl ')') dnl dnl ifdef(`confCHECK_DATE', `ifelse(confCHECK_DATE, `YES', `dnl dnl HACK(`check_date')dnl dnl ')') dnl dnl ifdef(`confCHECK_MAILING_LIST', `ifelse(confCHECK_MAILING_LIST, `YES', `dnl dnl HACK(`check_mailing_list')dnl dnl ')') dnl dnl ifdef(`confCHECK_ORGANIZATION', `ifelse(confCHECK_ORGANIZATION, `YES', `dnl dnl HACK(`check_organization')dnl dnl ')') dnl dnl ifdef(`confCHECK_MAILER', `ifelse(confCHECK_MAILER, `YES', `dnl dnl HACK(`check_mailer')dnl dnl ')') dnl ifdef(`confCHECK_MESSAGE_ID', `ifelse(confCHECK_MESSAGE_ID, `YES', `dnl HACK(`check_message_id')dnl ')') dnl dnl ifdef(`confCHECK_SUBJECT', `ifelse(confCHECK_SUBJECT, `YES', `dnl dnl HACK(`check_subject')dnl dnl ')') dnl dnl ifdef(`confCHECK_MISC', `ifelse(confCHECK_MISC, `YES', `dnl dnl HACK(`check_misc')dnl dnl ')') dnl dnl ifdef(`confMAILBOX_QUOTE', `ifelse(confMAILBOX_QUOTE, `NO', `dnl', `dnl dnl HACK(`check_quote', `'confMAILBOX_QUOTE)dnl dnl ')') dnl dnl ifdef(`confAUTO_RETURN_RECEIPT', `ifelse(confAUTO_RETURN_RECEIPT, `YES', `dnl dnl HACK(`return-receipt')dnl dnl ')')dnl dnl dnl ifdef(`confCHECK_RECEIVED', `ifelse(confCHECK_RECEIVED, `YES', `dnl dnl HACK(`check_received')dnl dnl ')') dnl dnl ifdef(`confCHECK_RECEIVED_DNSBL', `ifelse(confCHECK_RECEIVED_DNSBL, `YES', `dnl dnl HACK(`parse_received')dnl dnl include(confSITE_DIR`/sendmail-dnsbl-received.inc.mc')dnl dnl ')') dnl dnl ifdef(`confRELAY_BASED_ON_MX', `ifelse(confRELAY_BASED_ON_MX, `NO', `dnl', `dnl dnl HACK(`relay_based_on_MX')dnl dnl ')') dnl dnl ifdef(`confCHECK_COMPAT', `ifelse(confCHECK_COMPAT, `YES', `dnl dnl HACK(`check_compat')dnl dnl ')') dnl dnl ifdef(`confRESTRICT_LUSER_RELAY', `ifelse(confRESTRICT_LUSER_RELAY, `YES', `dnl dnl HACK(`restrict_luser_relay')dnl dnl ')') dnl dnl ifdef(`confCHECK_DSN', `ifelse(confCHECK_DSN, `YES', `dnl dnl HACK(`check_DSN')dnl dnl ')') dnl dnl ifdef(`confCHECK_TRANSFER_ENCODING', `ifelse(confCHECK_TRANSFER_ENCODING, `NO', `dnl', `dnl dnl HACK(`check_transfer_encoding')dnl dnl HACK(`check_transfer_encoding', `PocoMail', `Ask PocoMail author fix the lame encoding definition')dnl dnl HACK(`check_transfer_encoding', `ROM-Mail')dnl dnl ')') dnl dnl ifdef(`confCHECK_LOCAL', `ifelse(confCHECK_LOCAL, `NO', `dnl', `dnl dnl ifelse_strstr(confCHECK_LOCAL, `MAIL_EQ_RCPT', `dnl dnl HACK(`check_fake_local')dnl dnl ') dnl ifelse_strstr(confCHECK_LOCAL, `LOCALHOST', `dnl dnl HACK(`check_fake_internal')dnl dnl ') dnl ')') ifdef(`confMAIL_BACKUP', `ifelse(confMAIL_BACKUP, `YES', `dnl INPUT_MAIL_FILTER(`backup-smf.pl', confMAIL_BACKUP_PARAM)dnl ')') ifdef(`confCLAMAV', `ifelse(confCLAMAV, `YES', `dnl INPUT_MAIL_FILTER(`clamav-milter', confCLAMAV_PARAM)dnl ')') ifdef(`confDRWEB', `ifelse(confDRWEB, `YES', `dnl INPUT_MAIL_FILTER(`drweb-filter', confDRWEB_PARAM)dnl define(`confMILTER_MACROS_DRWEB', ``, {drweb_smf_skip}'')dnl ')') ifdef(`confKAV', `ifelse(confKAV, `YES', `dnl INPUT_MAIL_FILTER(`kavmilter', confKAV_PARAM)dnl define(`confMILTER_MACROS_KAV', ``, {kavmilter_skip}'')dnl ')') ifdef(`confAMAVIS', `ifelse(confAMAVIS, `YES', `dnl INPUT_MAIL_FILTER(`milter-amavis', confAMAVIS_PARAM)dnl ')') ifdef(`confMAIL_STATISTIC', `ifelse(confMAIL_STATISTIC, `YES', `dnl INPUT_MAIL_FILTER(`stat-smf.pl', confMAIL_STATISTIC_PARAM)dnl ')') ifdef(`confVERIFY_ADDR', `ifelse(confVERIFY_ADDR, `YES', `dnl INPUT_MAIL_FILTER(`verify-addr-smf.pl',confVERIFY_ADDR_PARAM)dnl ')') ifdef(`confSPAMASSASIN', `ifelse(confSPAMASSASIN, `YES', `dnl INPUT_MAIL_FILTER(`spamassassin', confSPAMASSASIN_PARAM)dnl ')') ifdef(`confGREYLISTING', `ifelse(confGREYLISTING, `YES', `dnl INPUT_MAIL_FILTER(`relaydelay', confGREYLISTING_PARAM)dnl ')') define(`confMILTER_MACROS_CONNECT', confMILTER_MACROS_CONNECT`, v, Z, b, {client_addr}, {client_name}')dnl define(`confMILTER_MACROS_HELO', confMILTER_MACROS_HELO`, {verify}')dnl define(`confMILTER_MACROS_ENVRCPT', confMILTER_MACROS_ENVRCPT`, u, r'confMILTER_MACROS_KAV`'confMILTER_MACROS_DRWEB) dnl HACK(`check_from')dnl dnl HACK(`check_to')dnl HACK(`precheck_envelope')dnl HACK(`check_mail_domain_best_mx')dnl dnl HACK(`smtp_auth')dnl TRUST_AUTH_MECH(`LOGIN PLAIN')dnl define(`confAUTH_MECHANISMS',`LOGIN PLAIN')dnl LOCAL_CONFIG HX-Envelope-Recipients: ${recipients} HX-Envelope-Recipient: ${rcpt_to} HX-Envelope-To: $u