邮件系统--amavisd.conf详解

amavisd-new: /etc/amavisd.conf详解:

#
# Part of file: /etc/amavisd.conf
#
$max_servers = 15;
$mydomain = 'mail.osspinc.com';
#
# 将你的虚拟域加到 "@local_domains_maps" 中,这样 Amavisd 在调用 SpamAssassin 检查完
# 邮件后才会在邮件 header 部分加入 'X-Spam-Status', 'X-Spam-Level' 等标记。
# 每个域都需要用引号包含起来,域之间用英文逗号分隔。
#
@local_domains_maps = ( [".$mydomain", "osspinc.com"] );  # list of all local domains
#
# 设置 amavisd 的 pid 文件。
#
$pid_file = "/var/run/amavisd.pid";
#
# 检测到病毒等邮件时发邮件通知到哪个邮件地址
#
$virus_admin                = "root/@$mydomain";
$mailfrom_notify_admin      = "root/@$mydomain";
$mailfrom_notify_recip      = "root/@$mydomain";
$mailfrom_notify_spamadmin  = "root/@$mydomain";
#
# 设置监听的 IP/Port。
#
$notify_method  = 'smtp:[127.0.0.1]:10025';
$forward_method = 'smtp:[127.0.0.1]:10025';
#
# 检测到 virus/spam 等信件时的默认动作。各参数的含义是:
#
#    * $final_virus_destiny:        检测到病毒时的动作
#    * $final_banned_destiny:       检测到受禁止的内容时的动作
#    * $final_spam_destiny:         检测到垃圾邮件、广告邮件(spam)时的动作
#    * $final_bad_header_destiny:   检测到不良信件时的动作
#
# 默认有以下几种动作:
#
#    * D_PASS: 无论信件是否有问题,都会将信件发给收件人
#    * D_DISCARD: 信件将被丢弃,并且不会告知收件人及发件人
#    * D_BOUNCE: 信件不会发送给收件人,但会通知发件人邮件没有被投递
#    * D_REJECT: 邮件不会被投递给收件人,但会通知发件人邮件被拒绝
#
# 注意:除了 D_PASS,其它参数都会导致邮件最终不被投递到用户邮箱里。
# 由于担心误删资料,所以默认将 spam, banned, bad_header 的默认动作都
# 设置为 D_PASS 了,请根据自己的需要来修改。
#
$final_virus_destiny      = D_DISCARD;
$final_banned_destiny     = D_PASS;
$final_spam_destiny       = D_PASS;
$final_bad_header_destiny = D_PASS;
#
# 在 @av_scanners 部分中,只保留 ClamAV 相关的内容,其它的都注释掉。
#
# 注意:这里需要修改 clamd 的 Socket 路径,修改为:/tmp/clamd.socket。
#
@av_scanners = (
# ### http://www.clamav.net/
['ClamAV-clamd',
   /&ask_daemon, ["CONTSCAN {}/n", "/tmp/clamd.socket"],
   qr//bOK$/, qr//bFOUND$/,
   qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
);
#
# 在 @av_scanners_backup 部分,只保留 ClamAV 相关的内容,其它的都注释掉。
#
@av_scanners_backup = (
  ### http://www.clamav.net/   - backs up clamd or Mail::ClamAV
  ['ClamAV-clamscan', 'clamscan',
    "--stdout --disable-summary -r --tempdir=$TEMPBASE {}", [0], [1],
    qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
);
#
# 调试 SpamAssassin。
#   0:  disable
#   1:  enable
#
$sa_debug = 0;
#
# 当邮件被认为是垃圾邮件时,是否修改邮件的主题。即在邮件主题里加上
# '*** SPAM ***' 字符串。
#
#   1:  enable
#   0:  disable
#
$sa_spam_modifies_subj = 1;
#
# remove existing headers
#
#$remove_existing_x_scanned_headers= 1;
#$remove_existing_spam_headers = 1;
#
# 默认情况下,凡是经过 Amavisd 过滤的邮件,都会在邮件头中被加入一行
# 邮件头信息,例如:
#
#    X-Virus-Scanned: amavisd-new at osspinc.com
#
# 将参数留空则不会添加邮件头。
#
# 如果需要自定义插入的邮件头信息,可以修改 /usr/sbin/amavisd 文件里
# 的对应内容:
#
#   sub add_forwarding_header_edits_per_recip
#
#$X_HEADER_TAG = 'X-Virus-Scanned';
#$X_HEADER_LINE = "by amavisd at $myhostname";
1;  # insure a defined return

 编辑完后,可以执行以下命令以检查 amavisd 是否配置正确:
# amavisd debug
debug
如果需要让 amavisd-new 输出更多调试信息,可以修改 /etc/amavisd.conf 文件中的 log 参数:
$log_level = 5;   # 范围:0 ~ 5FAQ & Trouble Shooting:

一、Amavisd 为何没有在邮件头中插入 'X-Spam-Status' 等标记?

参考链接:http://marc.info/?l=amavis-user&m=121371334007085&w=2
Amavisd 只有在以下两个条件同时满足的时候才会在邮件头中插入 'X-Spam-Status', 'X-Spam-Level' 等标记:
    1.* 接收邮件的域名被列在 '@local_domains_maps' 参数中,例如:
      @local_domains_maps = ( [".$mydomain","a.cn"] );  # list of all local domains
    除了这里列出的 '.$mydomain' 和 'a.cn' 这几个域外,其他域的邮件都不会被插入 'X-Spam-' 标记。
    2.* 邮件扫描的结果,分值(score)大于或等于 '$sa_tag_level_deflt','@spam_tag_level_deflt' 中定义的分值时才会插入 'X-Spam-Status' 等标记。'$sa_tag_level_deflt' 的分值默认是 '2.0'。可以按照自己的实际需求进行调整:
      $sa_tag_level_deflt  = 2.0;  # add spam info headers if at, or above that level

二、Do not scan outbound mails

Q: 如何让 Amavisd 不调用 SpamAssassin 和 ClamAV 扫描外发的邮件?
A: 在 /etc/amavisd.conf 文件中指定了这两个参数:

#
# 这里指定了对 @mynetworks 里的客户端使用的规则
#
$policy_bank{'MYNETS'} = {   # mail originating from @mynetworks
  originating => 1,  # is true in MYNETS by default, but let's make it explicit
  os_fingerprint_method => undef,  # don't query p0f for internal clients
};
#
# 这里指定了对本地用户、虚拟用户使用的规则
#
$policy_bank{'ORIGINATING'} = {  # mail supposedly originating from our users
  originating => 1,  # declare that mail was submitted by our smtp client
  allow_disclaimers => 1,  # enables disclaimer insertion if available
  # notify administrator of locally originating malware
  virus_admin_maps => ["virusalert/@$mydomain"],
  spam_admin_maps  => ["virusalert/@$mydomain"],
  warnbadhsender   => 1,
  # forward to a smtpd service providing DKIM signing service
  forward_method => 'smtp:[127.0.0.1]:10027',
  # force MTA conversion to 7-bit (e.g. before DKIM signing)
  smtpd_discard_ehlo_keywords => ['8BITMIME'],
  bypass_banned_checks_maps => [1],  # allow sending any file names and types
  terminate_dsn_on_notify_success => 0,  # don't remove NOTIFY=SUCCESS option 
};

三、如果要让 Amavisd 对本地外发的邮件不做邮件内容过滤和病毒扫描,可以在 policy_bank 里增加参数:

$policy_bank{'MYNETS'} = {   # mail originating from @mynetworks
  originating => 1,  # is true in MYNETS by default, but let's make it explicit
  os_fingerprint_method => undef,  # don't query p0f for internal clients
  #
  # 增加以下三个参数
  #
  bypass_spam_checks_maps   => [1],  # don't spam-check internal mail
  bypass_banned_checks_maps => [1],  # don't banned-check internal mail
  bypass_header_checks_maps => [1],  # don't header-check internal mail
};

要对虚拟用户使用此规则,加同样的参数即可。
--------------------- 
原文:https://blog.csdn.net/wtgame/article/details/6070246 
 

猜你喜欢

转载自blog.csdn.net/yetugeng/article/details/84235492
今日推荐