4.13. 文档的过期设置

4.13.1. expire.ctl

4.13.1. expire.ctl

配置文件 expire.ctl,控制文章的过期设置

  • 全局的设置

    /remember/:10
    

    history 文件保持 Message-IDs 的时间。在这段时间内,将不允许相同 Message-IDs 的文章进入,防止重复粘贴。

  • 当 inn.conf 中有配置:groupbaseexpiry: false 时的语法

    
     <storage_class>:<keep>:<default>:<purge>
    
    

    <storage_class> 是在 storage.conf 中存储配置定义的 class number。

    对于普通的文章(没有在头信息中定义 Expires),<default>定义了文章保持的天数。

    对于在头信息中定义了 Expires 的文章,<keep>和<purge>有作用。

    不管文章头信息中的 Expires 日期,所有文章至少要保持 <keep> 天,并且在 <purge> 天后过期,即使 Expires 定义的时间更长。

    如果 <default> 定义为 never,则没有定义 Expires 头信息的普通文章永不过期;

    如果 <keep> 定义为 never,则定义了 Expires 头信息的文章永不过期。忽略 <purge> 的配置。

    如果 <purge> 定义为 never,则定义了 Expires 头信息的文章永不过期。

  • 当 inn.conf 中有配置:groupbaseexpiry: true 时的语法

    
     <wildmat>:<flag>:<keep>:<default>:<purge>
    
    

    <wildmat> 匹配新闻组名。注意 <wildmat> 只能有一个表达式,且不能使用 ! 和 @。

    <flag> 可以取值为:M(受控), U(非受控), A(任何一种)。

    <keep>,<default>,<purge> 的含义和前面的一样。

news expire 的过程:expire 五部曲

  1. expire

    扫描 history file, 找出应被 expire 的 article pathname, 写到 /home/inn/log/expire.rm. 此一过程很短, 只要10分钟即可找到10万封该 expire 掉的 article.

  2. expireover

    读入 /home/inn/log/expire.rm, 把此档案内所有 entry 位於 overview db 对应之 index 移除.

  3. fastrm

    根据 /home/inn/log/expire.rm, 把内含之 pathname 全数移除, 相当於完成: cat /home/inn/log/expire.rm | xargs rm

  4. expired entries in history removed, active renumber,

    疑除该 expire 掉 article 的 history entries,

    rebuild dbz database (history.pag,.dir)

    根据 spool 内 article low/high number 调整 active 的 low/high number.

    此过程约数分钟, 此时不接受 nnrp connection request, post request 会延迟.

  5. innstat

    run awk -f /home/inn/news/innlog.awk /home/inn/log/news.notice

    df spool-dir, overview-dir, newslib-dir, out.going-dir

    cat /home/inn/log/errlog

    mail result to user usenet.