# SpamAssassin rules file: default welcomelists
#
# Please don't modify this file as your changes will be overwritten with
# the next update. Use @@LOCAL_RULES_DIR@@/local.cf instead.
# See 'perldoc Mail::SpamAssassin::Conf' for details.
#
# <@LICENSE>
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to you under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at:
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# </@LICENSE>

ifplugin Mail::SpamAssassin::Plugin::WLBLEval

###########################################################################
# Welcomelist rules
#
# Note that most of these get 'noautolearn'.  They should not be
# considered when deciding whether to auto-learn a message, as a
# user slip-up could result in scribbling side-effects in the bayes
# db as a result -- which is hard to remedy.

# 4.0 / Bug 7826 renames whitelist to welcomelist and blacklist to blocklist
if can(Mail::SpamAssassin::Conf::feature_welcomelist_blocklist)
  header USER_IN_BLOCKLIST		eval:check_from_in_blocklist()
  describe USER_IN_BLOCKLIST		From: user is listed in the block-list
  tflags USER_IN_BLOCKLIST		userconf noautolearn
  score USER_IN_BLOCKLIST		100

  # Backwards compatibility
  # To disable set "enable_compat welcomelist_blocklist" in init.pre
  if !can(Mail::SpamAssassin::Conf::compat_welcomelist_blocklist)
    meta USER_IN_BLACKLIST		(USER_IN_BLOCKLIST)
    describe USER_IN_BLACKLIST		DEPRECATED: See USER_IN_BLOCKLIST
    tflags USER_IN_BLACKLIST		userconf noautolearn
    score USER_IN_BLACKLIST		100
    score USER_IN_BLOCKLIST		0.01
  endif
endif
if !can(Mail::SpamAssassin::Conf::feature_welcomelist_blocklist)
  header USER_IN_BLOCKLIST	 	eval:check_from_in_blacklist()
  describe USER_IN_BLOCKLIST	 	From: user is listed in the block-list
  tflags USER_IN_BLOCKLIST	 	userconf noautolearn
  score USER_IN_BLOCKLIST	 	0.01

  meta USER_IN_BLACKLIST		(USER_IN_BLOCKLIST)
  describe USER_IN_BLACKLIST		DEPRECATED: See USER_IN_BLOCKLIST 
  tflags USER_IN_BLACKLIST		userconf noautolearn
  score USER_IN_BLACKLIST		100
endif

if can(Mail::SpamAssassin::Conf::feature_welcomelist_blocklist)
  header USER_IN_WELCOMELIST		eval:check_from_in_welcomelist()
  describe USER_IN_WELCOMELIST		User is listed in 'welcomelist_from'
  tflags USER_IN_WELCOMELIST		userconf nice noautolearn
  score USER_IN_WELCOMELIST		-100
    
  if !can(Mail::SpamAssassin::Conf::compat_welcomelist_blocklist)
    meta USER_IN_WHITELIST		(USER_IN_WELCOMELIST)
    describe USER_IN_WHITELIST		DEPRECATED: See USER_IN_WELCOMELIST
    tflags USER_IN_WHITELIST		userconf nice noautolearn
    score USER_IN_WHITELIST		-100
    score USER_IN_WELCOMELIST		-0.01
  endif
endif
if !can(Mail::SpamAssassin::Conf::feature_welcomelist_blocklist)
  header USER_IN_WELCOMELIST	 	eval:check_from_in_whitelist()
  describe USER_IN_WELCOMELIST		User is listed in 'welcomelist_from'
  tflags USER_IN_WELCOMELIST	 	userconf nice noautolearn
  score USER_IN_WELCOMELIST	 	-0.01
  
  meta USER_IN_WHITELIST		(USER_IN_WELCOMELIST)
  describe USER_IN_WHITELIST     	DEPRECATED: See USER_IN_WELCOMELIST 
  tflags USER_IN_WHITELIST       	userconf nice noautolearn
  score USER_IN_WHITELIST		-100
endif

if can(Mail::SpamAssassin::Conf::feature_welcomelist_blocklist)
  header USER_IN_DEF_WELCOMELIST	eval:check_from_in_default_welcomelist()
  describe USER_IN_DEF_WELCOMELIST	From: user is listed in the default welcome-list
  tflags USER_IN_DEF_WELCOMELIST	userconf nice noautolearn
  score USER_IN_DEF_WELCOMELIST		-15
  
  if !can(Mail::SpamAssassin::Conf::compat_welcomelist_blocklist)
    meta USER_IN_DEF_WHITELIST		(USER_IN_DEF_WELCOMELIST)
    describe USER_IN_DEF_WHITELIST	DEPRECATED: See USER_IN_WELCOMELIST 
    tflags USER_IN_DEF_WHITELIST	userconf nice noautolearn
    score USER_IN_DEF_WHITELIST		-15
    score USER_IN_DEF_WELCOMELIST	-0.01
  endif
endif
if !can(Mail::SpamAssassin::Conf::feature_welcomelist_blocklist)
  header USER_IN_DEF_WELCOMELIST	eval:check_from_in_default_whitelist()
  describe USER_IN_DEF_WELCOMELIST	From: user is listed in the default welcome-list
  tflags USER_IN_DEF_WELCOMELIST	userconf nice noautolearn
  score USER_IN_DEF_WELCOMELIST		-0.01
  
  meta USER_IN_DEF_WHITELIST		(USER_IN_DEF_WELCOMELIST)
  describe USER_IN_DEF_WHITELIST     	DEPRECATED: See USER_IN_DEF_WELCOMELIST 
  tflags USER_IN_DEF_WHITELIST       	userconf nice noautolearn
  score USER_IN_DEF_WHITELIST		-15
endif
  
if can(Mail::SpamAssassin::Conf::feature_welcomelist_blocklist)
  header USER_IN_BLOCKLIST_TO		eval:check_to_in_blocklist()
  describe USER_IN_BLOCKLIST_TO       	User is listed in 'blocklist_to'
  tflags USER_IN_BLOCKLIST_TO		userconf noautolearn
  score USER_IN_BLOCKLIST_TO	     	10

  if !can(Mail::SpamAssassin::Conf::compat_welcomelist_blocklist)
    meta USER_IN_BLACKLIST_TO		(USER_IN_BLOCKLIST_TO)
    describe USER_IN_BLACKLIST_TO	DEPRECATED: See USER_IN_BLOCKLIST_TO
    tflags USER_IN_BLACKLIST_TO		userconf noautolearn
    score USER_IN_BLACKLIST_TO		10
    score USER_IN_BLOCKLIST_TO		0.01
  endif
endif
if !can(Mail::SpamAssassin::Conf::feature_welcomelist_blocklist)
  header USER_IN_BLOCKLIST_TO	 	eval:check_to_in_blacklist()
  describe USER_IN_BLOCKLIST_TO		User is listed in 'blocklist_to'
  tflags USER_IN_BLOCKLIST_TO	 	userconf noautolearn
  score USER_IN_BLOCKLIST_TO	 	0.01

  meta USER_IN_BLACKLIST_TO		(USER_IN_BLOCKLIST_TO)
  describe USER_IN_BLACKLIST_TO     	DEPRECATED: See USER_IN_BLOCKLIST_TO
  tflags USER_IN_BLACKLIST_TO       	userconf noautolearn
  score USER_IN_BLACKLIST_TO		10
endif

if can(Mail::SpamAssassin::Conf::feature_welcomelist_blocklist)
  header USER_IN_WELCOMELIST_TO		eval:check_to_in_welcomelist()
  describe USER_IN_WELCOMELIST_TO	User is listed in 'welcomelist_to'
  tflags USER_IN_WELCOMELIST_TO		userconf nice noautolearn
  score USER_IN_WELCOMELIST_TO		-6

  if !can(Mail::SpamAssassin::Conf::compat_welcomelist_blocklist)
    meta USER_IN_WHITELIST_TO		(USER_IN_WELCOMELIST_TO)
    describe USER_IN_WHITELIST_TO	DEPRECATED: See USER_IN_WELCOMELIST_TO
    tflags USER_IN_WHITELIST_TO		userconf nice noautolearn
    score USER_IN_WHITELIST_TO		-6
    score USER_IN_WELCOMELIST_TO	-0.01
  endif
endif
if !can(Mail::SpamAssassin::Conf::feature_welcomelist_blocklist)
  header USER_IN_WELCOMELIST_TO		eval:check_to_in_whitelist()
  describe USER_IN_WELCOMELIST_TO	User is listed in 'welcomelist_to'
  tflags USER_IN_WELCOMELIST_TO		userconf nice noautolearn
  score USER_IN_WELCOMELIST_TO		-0.01

  meta USER_IN_WHITELIST_TO		(USER_IN_WELCOMELIST_TO)
  describe USER_IN_WHITELIST_TO		DEPRECATED: See USER_IN_WELCOMELIST_TO
  tflags USER_IN_WHITELIST_TO		userconf nice noautolearn
  score USER_IN_WHITELIST_TO		-6
endif

header USER_IN_MORE_SPAM_TO     eval:check_to_in_more_spam()
describe USER_IN_MORE_SPAM_TO   User is listed in 'more_spam_to'
tflags USER_IN_MORE_SPAM_TO     userconf noautolearn

header USER_IN_ALL_SPAM_TO      eval:check_to_in_all_spam()
describe USER_IN_ALL_SPAM_TO    User is listed in 'all_spam_to'
tflags USER_IN_ALL_SPAM_TO      userconf noautolearn

if can(Mail::SpamAssassin::Conf::feature_welcomelist_blocklist)
  body URI_HOST_IN_BLOCKLIST		eval:check_uri_host_in_blocklist()
  describe URI_HOST_IN_BLOCKLIST	Host or Domain is listed in the user's URI block-list
  tflags URI_HOST_IN_BLOCKLIST		userconf noautolearn
  score URI_HOST_IN_BLOCKLIST		100

  if !can(Mail::SpamAssassin::Conf::compat_welcomelist_blocklist)
    meta URI_HOST_IN_BLACKLIST		(URI_HOST_IN_BLOCKLIST)
    describe URI_HOST_IN_BLACKLIST	DEPRECATED: See URI_HOST_IN_BLOCKLIST
    tflags URI_HOST_IN_BLACKLIST	userconf noautolearn
    score URI_HOST_IN_BLACKLIST		100
    score URI_HOST_IN_BLOCKLIST		0.01
  endif
endif
if !can(Mail::SpamAssassin::Conf::feature_welcomelist_blocklist)
  if (version >= 3.004000)
    body URI_HOST_IN_BLOCKLIST		eval:check_uri_host_in_blacklist()
    describe URI_HOST_IN_BLOCKLIST	Host or Domain is listed in the user's URI block-list
    tflags URI_HOST_IN_BLOCKLIST	userconf noautolearn
    score URI_HOST_IN_BLOCKLIST		0.01
  
    meta URI_HOST_IN_BLACKLIST		(URI_HOST_IN_BLOCKLIST)
    describe URI_HOST_IN_BLACKLIST	DEPRECATED: See URI_HOST_IN_BLOCKLIST
    tflags URI_HOST_IN_BLACKLIST	userconf noautolearn
    score URI_HOST_IN_BLACKLIST		100
  endif
endif

if can(Mail::SpamAssassin::Conf::feature_welcomelist_blocklist)
  body URI_HOST_IN_WELCOMELIST	eval:check_uri_host_in_welcomelist()
  describe URI_HOST_IN_WELCOMELIST	Host or Domain is listed in the user's URI welcome-list
  tflags URI_HOST_IN_WELCOMELIST	userconf nice noautolearn
  score URI_HOST_IN_WELCOMELIST		-100

  if !can(Mail::SpamAssassin::Conf::compat_welcomelist_blocklist)
    meta URI_HOST_IN_WHITELIST		(URI_HOST_IN_WELCOMELIST)
    describe URI_HOST_IN_WHITELIST	DEPRECATED: See URI_HOST_IN_WELCOMELIST
    tflags URI_HOST_IN_WHITELIST	userconf nice noautolearn
    score URI_HOST_IN_WHITELIST		-100
    score URI_HOST_IN_WELCOMELIST	-0.01
  endif
endif
if !can(Mail::SpamAssassin::Conf::feature_welcomelist_blocklist)
  if (version >= 3.004000)
    body URI_HOST_IN_WELCOMELIST	eval:check_uri_host_in_whitelist()
    describe URI_HOST_IN_WELCOMELIST	Host or Domain is listed in the user's URI welcome-list
    tflags URI_HOST_IN_WELCOMELIST	userconf nice noautolearn
    score URI_HOST_IN_WELCOMELIST	-0.01

    meta URI_HOST_IN_WHITELIST		(URI_HOST_IN_WELCOMELIST)
    describe URI_HOST_IN_WHITELIST	DEPRECATED: See URI_HOST_IN_WELCOMELIST
    tflags URI_HOST_IN_WHITELIST	userconf nice noautolearn
    score URI_HOST_IN_WHITELIST		-100
  endif
endif

      # Bug 7256, using a header rule with an eval() function does not work the way
      # this was intended.

      # header    HEADER_HOST_IN_BLACKLIST eval:check_uri_host_listed('BLOCK')
      # describe  HEADER_HOST_IN_BLACKLIST Host or Domain in header is listed in the user's URI black-list
      # tflags    HEADER_HOST_IN_BLACKLIST userconf noautolearn

      # header    HEADER_HOST_IN_WHITELIST eval:check_uri_host_listed('WELCOME')
      # describe  HEADER_HOST_IN_WHITELIST Host or Domain in header is listed in the user's URI white-list
      # tflags    HEADER_HOST_IN_WHITELIST userconf nice noautolearn

###########################################################################
# Default welcomelists.  These should be addresses which send mail that is often
# tagged (incorrectly) as spam; it also helps that they be addresses of big
# companies with lots of lawyers, so if spammers impersonate them, they'll get
# into big trouble, so it doesn't provide a shortcut around SpamAssassin.
#
# Welcomelist and blocklist addresses are now file-glob-style patterns, so
# "friend@somewhere.com", "*@isp.com", or "*.domain.net" will all work.
#
# Please do not add unmoderated public mailing lists here.  They are
# too easily abused by spammers.

# Should really not be used these days, use def_welcomelist_auth if possible.

  # def_welcomelist_from_rcvd  *@foo.com  foo.com

#
#
#

endif # ifplugin Mail::SpamAssassin::Plugin::WLBLEval

