                αѤˤĤƤTIPS

------------------------------------------------------------
1	TIPS
1.1	ưŪ˵Υס򰵽̤
1.2	ưŪ˥סθŤä
1.3	ߤ
1.4	fml ΥΥå򤹤

2	examples
2.1	֤
2.2	֤ñ
2.3	get ޥɤȥѥ
2.4	Expire  Summary եľ

3	, archive
3.1	Introduction
3.2	ư֤ȼư expire ν
3.3	ΡޤȤgzipΤ?

4	utility ץ
4.1	gzip file ˤ(֤ؤѴ)
4.2	ֺ cron Ǽư

5	Expire (ŤեϾä)NewSyslog
5.1	Introduction
5.2	ư֤ȼư expire 
5.3	Config.ph Configurations
5.4	expire.pl ޥɥ饤󥪥ץ (bin/expire.pl)

6	¾TIPS
6.1	cronnewsyslog򤹤 (OBSOLETE shell version)
6.2	actives/members եΥХåå: .bak => .0 =>.1 
6.3	ե($DIR/log) turn over
6.4	newsyslog/logեȾõ
------------------------------------------------------------


1	TIPS

1.1	ưŪ˵Υס򰵽̤

spool  tar.gz ˤޤȤ롣 1/4 餤ˤʤ褦ˤ⤦
ǥեȤǤ100̤εĤ tar.gz ˰̤롣
: tar.gz ǡ̤Τε(ʤΤ)äʤ
      ưŪ˾äˤ $USE_EXPIRE ()

	$USE_ARCHIVE
See also: $USE_ARCHIVE 

1.2	ưŪ˥סθŤä
See also: 5.3 
See also: relation_EXPIRE_LIMIT_and_ARCHIVE_UNIT 

$USE_EXPIRE  1 ˤ spool/ θŤưŪ˾äϡ־
פǤ

$USE_ARCHIVE Ʊ˻ȤդɬפǤ
See also: relation_EXPIRE_LIMIT_and_ARCHIVE_UNIT 

1.3	ߤ

(2000/հʹߤ current only)

Ǹ10Ԥߤ롣ʤߤ log  tail ϰ

% makefml log elena

Ǹ100

% makefml elena::tail -100 

1.4	fml ΥΥå򤹤
See also: utility_programs 6.6 

/usr/local/fml/bin/daily.pl Ȥץब롣餫Ȥ
ʳι(: Article )ɽ롣
в᤮Ȥ⤦Ȥϥѥեѹ롣

ܼŪˤϡΥФ

% egrep -v -f /usr/local/fml/etc/daily.ignore ե

򤹤ΤȰǤ

    [daily إ]
    
    daily.pl [-hd] [-f patfile] [-t trap_patfile] [-p days]
    
    	-h	إ
    	-d	ǥХå⡼
    	-p	ΥĴ٤롣ǥեȤϣ
    
    	-f	̵뤹ѥΥե

2	examples

2.1	֤

	$ARCHIVE_DIR = 'var/archive'; (default is 'var/archive')

Ǥ(default  'var/archive' ˤʤäƤޤ)

Ƥϥ֤ξΥꥹȤǤ @ARCHIVE_DIR Ƭ
ޤ֤ξʣäƤ⤤Ǥ get, mget 
õоݤˤϤʤޤưŪ˺ $ARCHIVE_DIR ==
$ARCHIVE_DIR[0] Ǥ

2.2	֤ñ

Ĥñ̤ǤޤȤ뤫

	$ARCHIVE_UNIT 

Ƿޤޤͤʤ

	$DEFAULT_ARCHIVE_UNIT (default 100)

ȤޤǥեȤ 100 Ǥbackward compatibility Τᤳ
ѿʤƤ 100 ˤʤޤ
 @StoredSpool_DIR = ('var/archive');  Obsolete ʽǤ
 Backward Compatibility Ȥ
  @ARCHIVE_DIR ƤΤǡɤǤưޤ

2.3	get ޥɤȥѥ

㤨С"get 1 "  "mget 1" ȤޥɤΥν
֤

* Case: "get 1" and "mget 1"

1	$SPOOL_DIR (=> $FP_SPOOL_DIR)

2	@ARCHIVE_DIR

	⤷ 1-100 ޤǤtar + gzipƤ var/archive/100.tar.gz 
	򸫤Ĥ鵭  Фƣ֤

* Case: "mget 1-10"  command

ν֤Ʊ100.tar.gz  1  10 Ф
֤

* Case: "get 100.tar.gz" and "mget 100.tar.gz"  command

var/archive/100.tar.gz 򤽤Τޤ֤ǥեȤϤ 
uuencode ΤǤ

2.4	Expire  Summary եľ

	$EXPIRE_SUMMARY = 1;

Ȥ Expire  Summary եľޤ

3	, archive

fmlΥסϰ̰եǤίȼǤ;)
ξϤϣ̤򣱤ĤΥ֤ˤˡˤĤƤǤ

3.1	Introduction

ίäƤȤʤȤޤŤ tar 100Ĥ餤
 gzip  1/4 餤ˤʤޤ
ΨΤϥإåȤƱ褦ʤΤ֤ФƤ뤫Ǥ
100 ȤޥåʥСܰ¤ 100 ĸǤ 50K bytes ˤʤ
ΤǹԹͤˤޤʤȤиƤޤ

3.2	ư֤ȼư expire ν

Ǥإ֡٤ȤϤ٤οΥ᡼ĤˤޤȤ¸
(ˡ)Ȥ̣Ƥޤ$DIR/spool ˰̤ĤΤ⥢
֤ȤǰȤϻפޤΥɥȤǤ϶̤Ƥޤ

ưǥֺŤκ򤹤Τ̣ǰǤ
fml ˼ưǤԤʤ碌뤳ȤǤޤ

$USE_EXPIRE (Ťκ) $USE_ARCHIVE (֤κ) Ȥ
ѿ 1 ˤ fml ֤expireԤʤޤ

expire   ȿ복ǰǤĤƱˤʤϥ
᡼դǤǥեȤϤθͤˤʤä
ĤǤ

Ф˵ϤʤƤϤʤפȤ׵᤬ 
expire Ĥĥ֤뤳ȤưǹԤʤפȤϿ侩Ǥ
󡣤ȤΤϤ줫OStargzipְ㤨촹Ȥ
ꤷƤߤȴ狼ޤexpire ϤΤ˰¸Ƥ
ʤ̤ưƵäƤޤ֤Ϻʤʤ
Ƥޤޤä
	ؼʬס
	ؤOSϤʤȤϤʤס
	ؤޤΣ̤ͣεϤäȤ餤ƤOK
ʤǧǤɬפޤ

֤ExpireΤɤ餫ưǤɤ餫ưǤΤۤʤΤ
⤷ޤ󡣰餤ФϤ ư֡ưexpire 
ۤǤξϥ֤ꤷƤߤơޤäƤ
뤳ȤǧƤ expire ꤹ٤Ǥ礦

ѥ᡼Ǥեμ˱ƶ뤿ɬ 
$EXPIRE_LIMIT ǤϤʤ"ο"(Ĥο)ǻꤷƲ
Ƽξ

	$EXPIRE_LIMIT > $ARCHIVE_UNIT 

ɬפǤǰΤ

	$EXPIRE_LIMIT = $ARCHIVE_UNIT * 2;

餤ˤƤΤɤǤ礦Ǥʤݾڤʤ
ǥ顼ȤʤޤեĴ٤ 
overhead 򤫤м¸ϤǤޤȤ礦ȤϻפʤΤǼ
Ƥޤ

3.3	ΡޤȤgzipΤ?

1. İgzipȡȾʬˤʤޤ󤬡100ĤޤȤƽ񤱤
ȡإåȤνŤʤ꤬Τ25%ˤޤǰ̤Ǥ褦ˤʤޤ

2. Mail-Countۤ뺢ˤʤȤø directory cache ʤɤѤ
ʤäƤޤĤ directory Υե򸺤餹 or ۤ
˰ܤȤ˰̣褦ˤʤޤspoolȤܤ100
ʬΰΥեˤȸ̤ˤޤ

4	utility ץ

4.1	gzip file ˤ(֤ؤѴ)
See also: digest 2.17 

$USE_ARCHIVE μưˤޤ˻ ⤷ cron ǤΥץ
ưƤɤǤ
See also: digest 2.17 

	archive.pl [-dh] [-A ARCHIVE_DIR][-u unit] range

	-d	debug mode
	-h	help 
	-A	֤
		config.ph 궯
	-u	Ǥñ̡ǥեȤϵĤ

	range	ǺɤεޤǤ򥢡֤뤫
		ǥեȤǤϺεֹľΡɣܿ
		ޤǤ򥢡֤оݤεȤƥ֤롣

:ΥץMLΥۡǼ¹Ԥ뤳ȤˤƤޤ
ޤ

	% cd /var/spool/ml/Elena
	% perl bin/archive.pl

Τ褦˻ȤȤԤƤޤ

 archive.pl 2000 Ȥȡ2000 ޤǤΥե 100 ĤĤ
ˤơarchive˺ޤѿ archive.pl ƬǥåȤƤ
ΥסϾäʤΤǡդʧäƾäƲ
(Ȥ꤫ޤ󤫤顢)
ʬ㡢ǰΤ ٤ޤȤޤäȤǤäƼưǤĤ
Ƥޤ

㤨С

	spool/1-100	 tar+gzip  var/archive/100.tar.gz
	spool/101-200	 tar+gzip  var/archive/200.tar.gz

Τ褦ʥեarchiveβ˺ޤŪΣ̤ͣξˤޤǤä

% ls 

MSendrc		actives		config.ph	deny
guide		help		list		log
members		objective	seq		spool
summary		welcome

% test -d var || mkdir var
% test -d var/archive || mkdir var/archive
% perl archive.pl 3800

	ĤåФ뤬ά

% ls archive

100.tar.gz   200.tar.gz 

	ĤåФ뤬ά

spool 3800 ޤǤ 100 ĤĤΥѥåޤspoolθ
᡼ưŪ˾äϤʤ(Τ)ΤǡʬǾäƲ

4.2	ֺ cron Ǽư

cronǼưŪ(㤨нˤīȤ)˼η

   (chdir /var/spool/ml/Elena; /usr/local/bin/perl bin/archive.pl)

ȤǤ⤹ɤǤ礦bin/archive.sh θܤǤĤͣ
ʤ顢륹ץȤˤޤȤƸƤ٤гڤǤޤȤƱͤ 
crontab ˵ҤФ褤Ǥ

crontab 㡧

	0 * * * * /bin/sh /usr/libexec/fml/archive.sh

[/usr/libexec/fml/archive.sh]

	#!/bin/sh

	(cd /var/spool/ml/Elena;    /usr/local/bin/perl bin/archive.pl)
	(cd /var/spool/ml/Freekick; /usr/local/bin/perl bin/archive.pl)

5	Expire (ŤեϾä)NewSyslog

ξϤϡָŤեưŪ˾äס֥ơ󤷤ʤŤե
ϾäƤưˤĤƲ⤷ޤ

5.1	Introduction

Expire(ʾŤեõˡ)Ͻ HOOK 򤫤
ǼƤޤʥ饤֥ȤƻȤ褦ˤޤ
̤ȤѤäƤޤñHOOK񤫤ʤƤɤʤäȤ
Ǥ

5.2	ư֤ȼư expire 

إ֡٤ϥ᡼̰̤ǤϤʤ٤οĤˤޤȤ¸
ˡΤȤ̣Ƥޤ$DIR/spool ˰̤ĤΤ⥢
֤ȤǰȤϻפޤΥɥȤǤ϶̤Ƥޤ

ưǥֺŤκ򤹤Τ̣ǰǤ
FML ˼ưǤԤʤ碌뤳ȤǤޤ$USE_EXPIRE (Ť
) $USE_ARCHIVE (֤κ) Ȥѿ 1 ˤFML
֤expireԤʤޤ

expire   ȿ복ǰǤĤƱˤ̾¤
ϥѥ᡼դǤǥեȤϤθͤ
ʤäƤ뤿ᡢDISKΨ⤷ޤ

Ф˵ϤʤƤϤʤפȤ׵᤬ 
expire Ĥĥ֤뤳ȤưǹԤʤפȤϿ侩Ǥ
󡣤ȤΤϤ줫OStargzipְ㤨촹Ȥ
ꤷƤߤȴ狼ޤexpire ϤΤ˰¸Ƥ
ʤ̤ưƵäƤޤ֤Ϻʤʤ
Ƥޤޤä
	ؼʬס
	ؤOSϤʤȤϤʤס
	ؤޤΣ̤ͣεϤäȤ餤ƤOK
ʤǧǤɬפޤ

֤ExpireΤɤ餫ưǤɤ餫ưǤΤۤʤΤ
⤷ޤ󡣰餤ФϤ꼫ưܼ֡ưexpireǤ͡
ξϥ֤ꤷƤߤơޤäƤ뤳Ȥǧ
Ƥ expire ꤹ٤Ǥ礦

ѥ᡼Ǥեμ˱ƶ뤿ɬ 
$EXPIRE_LIMIT ǤϤʤ"ο"(Ĥο)ǻꤷƲ
Ƽξ

	$EXPIRE_LIMIT > $ARCHIVE_UNIT 

ɬפǤǰΤ

	$EXPIRE_LIMIT = $ARCHIVE_UNIT * 2;

餤ˤƤΤɤǤ礦Ǥʤݾڤʤ
ǥ顼ȤʤޤեĴ٤ 
overhead 򤫤м¸ϤǤޤȤ礦ȤϻפʤΤǼ
Ƥޤ

5.3	Config.ph Configurations

	$USE_EXPIRE = 1; (default is 0, "not expire")

ˤ expire 򤷤ޤǥեȤǤ

	$EXPIRE_LIMIT = "7days";

ǡ7Ĥޤ콵ʬεĤƸϾõޤñ̤
$EXPIRE_LIMIT Ĵޤ$EXPIRE_LIMIT Υ󥿥å

	days ()
		 (ο)

ΤŤ줫Ǥ:

	7days	7¸
	100	Ƕ100̤εĤƸϾõ

[]

ͤޤǤHOOKȤΤ񤤤Ƥ

   SYNOPSIS:
	&Expire(, (ʾŤեä));

㡧
	$FML_EXIT_HOOK .= q#
		&use('expire');
		&Expire($SPOOL_DIR, 7);
	#;

ꤹС$SPOOL_DIR ʲΥեˤ 7ʾŤե
äޤʤʤäޤա

:	եǾäե

   SYNOPSIS:
	&Expire(, ĤƤ, 1);

㡧
	$FML_EXIT_HOOK .= q#
		&use('expire');
		&Expire($SPOOL_DIR, 100, 1);
	#;

ꤹС$SPOOL_DIR ʲκǿ100ĤΤߤĤƸϾõޤ
(ʤäޤ)

5.4	expire.pl ޥɥ饤󥪥ץ (bin/expire.pl)

expire.pl [-h] [-e expire_days] [-s spool_directory] [-n]

    -h this help
    -e expire
    -n ʻĤեꤷơexpire⡼ɡ
    -s ס

6	¾TIPS

6.1	cronnewsyslog򤹤 (OBSOLETE shell version)

ȤС

0 6 * * 0 (chdir dir-of-fml; sh bin/newsyslog.sh log var/log)

Ȥ񤯤櫓Ǥmsend.pl Ǥ

See also: 6.4 

	$NOT_USE_NEWSYSLOG = 1; (default 0)

Ȥ newsyslog ¹Ԥޤ(default ϼ¹)

6.2	actives/members եΥХåå: .bak => .0 =>.1 

̤ꥹȤСꥹȤιԤʤ .bak ե
콵ʬιĤ­ƤޤС¿Ȥ .bak ե
礭ʤäƤޤޤߤǤϥեΥ

	$AMLIST_NEWSYSLOG_LIMIT	(default 50*3000 = 150K bytes)

ۤ newsyslog (see 6.4) Ȥä file.bak ե
 var/log/file.0 ˰ưȤȤ򤷤Ƥޤ

	file.bak       -> var/log/file.0
	var/log/file.0 -> var/log/file.1
	...

ޤȤΩRCSˤХååפǽǤRCSǥХååפ
Ȥ

	$AMLIST_BACKUP_TYPE = "rcs"; (default "")

ꤷƲλ .bak եϹΤľƤ 
file Ǥ

6.3	ե($DIR/log) turn over

ե뤬礭ۤ log -> log.0 -> log.1 Τ褦ˤ
Ƥޤ礭δϼѿˤޤ

	$LOGFILE_NEWSYSLOG_LIMIT (default "")

10K  1M Τ褦ϤǤޤ

6.4	newsyslog/logեȾõ

newsyslog(8) ϥեץǤά
ΤFML󶡤Ƥޤ

       Newsyslog  is  a  program  that should be scheduled to run
       periodically by crontab.  When it is executed it  archives
       log  files  if  necessary.  If a log file is determined to
       require archiving, newsyslog rearranges the files so  that
       ``logfile''  is empty, ``logfile.0'' has the last period's
       logs in it, ``logfile.1'' has the next  to  last  period's
       logs  in  it,  and so on, up to a user-specified number of
       archived logs.  Optionally the archived logs can  be  com-
       pressed to save space.

㤨СޤȤᤪ msend.pl ī6(default) newsyslog 
ԤƤޤ @NEWSYSLOG_FILES ꤵƤ뤳3ĤΥե
ФŤ֤˻ĤŤʤ᤮äȤư򤷤ޤ

	@NEWSYSLOG_FILES = 
	   ("$MSEND_RC.bak", "$MEMBER_LIST.bak", "$ACTIVE_LIST.bak")

	rm -f var/log/members.4
	mv -f var/log/members.3 var/log/members.4
	mv -f var/log/members.2 var/log/members.3
	mv -f var/log/members.1 var/log/members.2
	mv -f var/log/members.0 var/log/members.1
	ln -s members.bak 	var/log/members.0

¹Ԥޤɬפʤ  @NEWSYSLOG_FILES  좬äƤۤե
log ȤġˤĤ廊ơ config.ph ʤɤ˽񤤤Ʋ

@NEWSYSLOG_FILES = 
	("$MSEND_RC.bak", "$MEMBER_LIST.bak", "$ACTIVE_LIST.bak", "log")


		INDEX

$AMLIST_BACKUP_TYPE                        ...   6.2 
$AMLIST_NEWSYSLOG_LIMIT                    ...   6.2 
archive                                    ...   3 
archive.pl                                 ...   4.1 
$ARCHIVE_DIR                               ...   2.1 
$ARCHIVE_UNIT                              ...   2.2 3.2 5.2 
archive by cron                            ...   4.2 
$DEFAULT_ARCHIVE_UNIT                      ...   2.2 
expire                                     ...   5 
&Expire(, (ʾŤեä))   ...   5.3 
expire.pl                                  ...   5.4 
$EXPIRE_LIMIT                              ...   3.2 5.2 5.3 
$EXPIRE_LIMIT > $ARCHIVE_UNIT              ...   3.2 5.2 
$EXPIRE_SUMMARY                            ...   2.4 
$FML_EXIT_HOOK                             ...   5.3 5.4 
libnewsyslog.pl                            ...   6.4 
$LOGFILE_NEWSYSLOG_LIMIT                   ...   6.3 
@NEWSYSLOG_FILES                           ...   6.4 
$NOT_USE_NEWSYSLOG                         ...   6.1 6.4 
@StoredSpool_DIR                           ...   2.2 
$USE_EXPIRE                                ...   5.3 
