Majordomo¤ò¥½¡¼¥¹¤«¤é¥¤¥ó¥¹¥È¡¼¥ë ----- 2012年02月02日
FreeBSD 9.0¤òÆþ¤ì¤Æports¤ÇMajordomo¤òÆþ¤ì¤è¤¦¤È¤¹¤ë¤È¡¢¸Å¤¤¤Î¤ÇMailman¤ò»È¤¨¤È¸À¤Ã¤Æ¤¯¤ë¡£°ÊÁ°¤Ï¤½¤ì¤Ç¤â¥¤¥ó¥¹¥È¡¼¥ë¤Ç¤¤¿¤Î¤À¤¬¡¢¤¤¤è¤¤¤èports¤Ç¤ÏÆþ¤ì¤é¤ì¤Ê¤¤¤é¤·¤¤¡£Mailman¤ò»È¤¦¤³¤È¤â¹Í¤¨¤¿¤¬¡¢ML¤Î±¿ÍѾ忧¡¹¤ÈºÙ¤«¤¤¥«¥¹¥¿¥Þ¥¤¥º¤ò¹Ô¤Ê¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢¤Ê¤«¤Ê¤«»ß¤á¤é¤ì¤Ê¤¤¡£
¤½¤³¤Ç¡¢µ×¡¹¤Ë¥½¡¼¥¹¤ò¼è¤Ã¤Æ¤¤Æ¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¤Î¤À¤¬¡¢¤À¤¤¤Ö¤ä¤êÊý¤ò˺¤ì¤Æ¤¤¤¿¤Î¤Ç¡¢²þ¤á¤Æ¥¤¥ó¥¹¥È¡¼¥ëÊýË¡¤ò½ñ¤¤¤Æ¤ª¤¯¤³¤È¤Ë¤·¤¿¡£
¤Þ¤º¡¢²¼µ¤«¤émajordomo¤Î¥½¡¼¥¹¤Îgzip¥Õ¥¡¥¤¥ë¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¤¯¤ë¡£
http://www.greatcircle.com/majordomo/
¤½¤·¤Æ¡¢Å¬Åö¤Ê¥Õ¥©¥ë¥À¡¼¤Ç²òÅह¤ë¡£
# tar xvzf majordomo-1.94.5.tar.gz
majordomo-1.94.51¤Î¥Õ¥©¥ë¥À¡¼¤¬¤Ç¤¤ë¡£
majordomo¤Î¥æ¡¼¥¶¡¼Ì¾¡¢¥°¥ë¡¼¥×̾¤ò·è¤á¤ëɬÍפ¬¤¢¤ë¤Î¤Ç¡¢²¼µ¤òÄɲ乤롣
/etc/passwd¤Ë
majordom:*:54:54:Majordomo Pseudo User:/usr/local/majordomo:/nonexistent
/etc/group¤Ë
majordom:*:54:
¥æ¡¼¥¶¡¼ID¤È¥°¥ë¡¼¥×ID¤Ïports¤Ç¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¤È¤¤ÈƱ¤¸¤Ë54¤È¤·¤¿¡£
¼¡¤Ëmajordomo-1.94.51¤ËÆþ¤Ã¤Æ¡¢Makefile¤ÎÊÔ½¸¤ò¤¹¤ë¡£
# cd majordomo-1.94.51 # vi Makefile PERL = /usr/bin/perl ¡¡¡¡¡¡¡¡¡¡¡¡ ¢« perl¤Î°ÌÃ֤λØÄê¤Î½¤Àµ W_HOME = /usr/local/majordomo ¢« ¼«Ê¬¤Îmajordomo¤Î¥¤¥ó¥¹¥È¡¼¥ëÀè¤ò»ØÄê W_USER = 54¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢« user ID W_GROUP = 54 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¢« group ID TMPDIR = /usr/tmp¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ¢« tmp¥Ç¥£¥ì¥¯¥È¥ê¡¼¤Î»ØÄê
¼¡¤Ësample.cf¤òmajordomo.cf¤È¤·¤Æ¥³¥Ô¡¼¤·¡¢ÊÔ½¸¤¹¤ë¡£
# cp sample.cf majordomo.cf
# vi majordomo.cf
$whereami = "host.example.com"; ¢« ±¿ÍѤ¹¤ë¥Û¥¹¥È̾¤òÆþ¤ì¤ë¡£
#if ( defined $ENV{"HOME"}) {
# $homedir = $ENV{"HOME"};
#} else {
# $homedir = "/usr/test/majordomo";
#}
$homedir = "/usr/local/majordomo"; ¢«¡¡$homedir¤Î¾ì½ê¤òñ½ã¤Ë»ØÄê
$sendmail_command = "/usr/sbin/sendmail"; ¢« sendmail¤Î¾ì½ê¤Î»ØÄê
$TMPDIR = "/usr/tmp"; ¢« tmp¥Ç¥£¥ì¥¯¥È¥ê¡¼¤Î»ØÄê
¤³¤³¤Ç¡¢/usr/tmp¤òºîÀ®¤·¡¢¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤ò½ñ¤¹þ¤ß¤ò²Äǽ¤Ë¤·¤ÆMajordomo¤ò¥¤¥ó¥¹¥È¡¼¥ë
# mkdir /usr/tmp # chmod 777 /usr/tmp # make install
¤½¤·¤Æ¡¢wrapper¤Î¥¤¥ó¥¹¥È¡¼¥ë¤È¥Æ¥¹¥È
# make install-wrapper # cd /usr/local/majordomo # ./wrapper test-config
¥¨¥é¡¼¤¬¤Ç¤Ê¤±¤ì¤Ð¡¢¥¤¥ó¥¹¥È¡¼¥ë¤Ï½ªÎ»¤Ç¤¢¤ë¡£
°Ê¹ß¤ÎÀßÄê¤Ïports¤ÇÆþ¤ì¤¿¾ì¹ç¤ÈƱ¤¸¤Ê¤Î¤Ç¾Êά¤¹¤ë¡£
¡ö¡ö¡ö¡ö¥¤¥ó¥¹¥È¡¼¥ë¸å¤Ë»¶¡¹¥È¥é¥Ö¤Ã¤¿»ö¡ö¡ö¡ö¡ö
(1) wrapper¤Î¼Â¹Ô¸¢¸Â
¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ./wrapper config-test¤Ï̵»ö¤Ë½ªÎ»¤·¤¿¤¬¡¢FreeBSD 9.0¤Ë¤Ê¤Ã¤Æ¡¢¥á¡¼¥ë¤Î¼Â¹Ô¸¢¸Â¤Ïroot¤Ç¤Ê¤¯¤Ê¤Ã¤¿¤è¤¦¤Ç¡¢majordomo¤Îwrapper¤¬Permission denied¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¡£
¤³¤ÎÂкö¤È¤·¤Æ¡¢/etc/group¤Îmajordom¤Ëmailnull¤òÄɲ乤ëɬÍפ¬¤¢¤Ã¤¿¡£
# vi /etc/group majordom:*:54:mailnull ¢«¡¡mailnull¤òÄɲ乤ë(2) majordomo.pl¤Î½¤Àµ
listsÆâ¤Ëtest¤Î¥Ç¥£¥ì¥¯¥È¥ê¡¼¤òºî¤êowner, group¤È¤â¤Ëmajordom¤Ë¤·¤Æ¸å¤Ë¡¢majirdomo¤Ësubscribe test¤È¥á¡¼¥ë¤ò½Ð¤¹¤Èưºî¤»¤º¡¢majordomo¥Ç¥£¥ì¥¯¥È¥ê¡¼Æâ¤ÎLog¤Ë°Ê²¼¤Î¥¨¥é¡¼¤¬µÏ¿¤µ¤ì¤Æ¤¤¤¿¡£
ABORT Majordomo@abc.def.jp: HOGEHOGE <hogehoge@abc.def.jp> is not a valid return address.
Package¤ÇMajordomo¤òÆþ¤ì¤ë¤ÈÀµ¾ï¤Ëưºî¤¹¤ë¤Î¤Ç¡¢¿§¡¹Ä´¤Ù¤¿¤émajordomo.pl¤Ë½¤Àµ¤¬É¬ÍפǤ¢¤Ã¤¿¡£
sub main'ParseAddrs¤ÎÃæ¤Îµ½Ò¤Ç¤¢¤ë¡£(98¹ÔÉնᤫ¤é»Ï¤Þ¤Ã¤Æ¤¤¤ë)
sub main'ParseAddrs {
local($_) = shift;
1 while s/\([^\(\)]*\)//g; # strip comments
1 while s/"[^"]*"\s//g; # strip comments"
split(/,/); ¢ª¡¡my @parts = split(/,/); # split into parts
¡¡ foreach (@_) {¡¡¡¡¢ª¡¡¡¡ foreach (@parts) {
1 while s/.*<(.*)>.*/$1/;
s/^\s+//;
s/\s+$//;
}
@_; ¢ª¡¡ @parts;
}
¸å¤ËÄ´¤Ù¤¿¤é¡¢perl 5.12.°Ê¹ß¤Ç½¤Àµ¤¬É¬ÍפȤʤ俤ȤΤ³¤È¡£¥Þ¥¸¥Ã¥¯ÊÑ¿ô¤Î@_¤ò»È¤¦¤Î¤¬¡¢¤½¤â¤½¤â´Ö°ã¤¤¤À¤¬¡¢°ÊÁ°¤Îperl¤Ç¤Ï²¿¤È¤«Æ°¤¤¤Æ¤¤¤¿¡£
»²¹ÍURL: http://henrysnotes.org/?p=448
(3) Sequencer
majordomo-1.94.5-jp.patch.gz¤ò/usr/local/majordomo¤ËÆþ¤ì¡¢ÆüËܸ첽¤Î¥Ñ¥Ã¥Á¤ò¹Ô¤¤¡¢resend¤Çưºî³Îǧ¤·¤Æ¤«¤ésequencer¤ËÊѤ¨¤¿¤éư¤«¤Ê¤¯¤Ê¤Ã¤¿¡£
²¿¤Î¤³¤È¤Ï¤Ê¤¤¡¢sequencer¤ÎÃæ¤Ë¤âsendmail¥³¥Þ¥ó¥É¤Ë/usr/lib/sendmail¤ò¤·¤Æ¤¤¤ë¤È¤³¤í¤¬3²Õ½ê¤¢¤Ã¤¿¡£/usr/sbin/sendmail¤Ë½ñ¤Ä¾¤·¤¿¡£
# vi sequencer
$sendmail_cmd = "/usr/sbin/sendmail $opt_m -f$sendmail_sender " .
print MAIL ">>> /usr/sbin/sendmail -f$sendmail_sender -t\n";
local(@mailer) = split(' ',"/usr/sbin/sendmail -f$sendmail_sender -t");
¤Ê¤ª¡¢Majordomo¤òÆüËܸ첽¤·¤¿¤¤¾ì¹ç¤Ï¡¢ÆüËܸ첽¤Î¥Ñ¥Ã¥Á(majordomo-1.94.5-jp.patch.gz)¤ò¤¢¤Æ¤¿¸å¤Ë²¼µ¤Î¤è¤¦¤Ëjsendmail¤ò¤Ä¤¯¤ê¡¢majordomo.cf¤Î$sendmail_command¤ò½ñ¤´¹¤¨¤ë¡£
# vi jsendmail #! /bin/sh /usr/local/bin/nkf -j | /usr/sbin/sendmail $*
# chmod +x jsendmail
# vi majordomo.cf # $sendmail_command = "/usr/sbin/sendmail"; $sendmail_command = "/usr/local/majordomo/jsendmail";
jsendmail¤Ë½ñ¤´¹¤¨¤ë¤Î¤Ïmajordomo.cf¤Î¤ß¤Ç¡¢sequencer¤Ê¤É¤Ë¤¢¤ë/usr/sbin/sendmail¤Ï½ñ¤´¹¤¨¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£½ñ¤´¹¤¨¤ë¤ÈSubject¤ÎMIMEÊÑ´¹¤¬¤Ê¤µ¤ì¤Ê¤¯¤Ê¤ë¡£
(4) ¤½¤Î¾
sequencer¤ËÊѤ¨¤¿¤Î¤Ï¥á¡¼¥ë¤Î¥¿¥¤¥È¥ë¤Ë[Test:00123]¥¿¥¤¥È¥ë ¤Î¤è¤¦¤Ë¥á¡¼¥ë¤Î·ï̾¤ËÏ¢ÈÖ¤ò¤Ä¤±¤¿¤¤¤«¤é¤Ç¤¢¤ë¤¬¡¢¤³¤Î¤¿¤ámajordomo/listsÆâ¤Ëtest.seq(test¤Î̾¤ÎML̾¤Î¾ì¹ç)¤Î¥Õ¥¡¥¤¥ë¤òºî¤ê¡¢Î㤨¤Ð00001¤Î¤è¤¦¤ËºÇ½é¤ÎÈÖ¹æ¤òÆþ¤ì¤Æ¤ª¤¯¡£0¤Î¿ô¤Ï¡¢Ï¢È֤ηå¿ô¹ç¤»¤Î¤¿¤á¤Ç¡¢¤³¤ÎÎã¤Î¾ì¹ç¤Ï5·å¤Ë¤Ê¤ë¡£