강좌

HOME > 강좌 >
강좌| 리눅스 및 오픈소스에 관련된 강좌를 보실 수 있습니다.
 
Majordomo (메일링리스트 )
조회 : 7,731  





Majordomo ? 이름이 참 이상하져? 
센드메일에서 aliases 파일을 이용해 간단한 메일링 리스트를 구현 할 수 있습니다.
하지만 사용자가 많아 지고, 규모가 커짐에 따라 체계적으로 메일링 리스트(1회에 보내는 동일 우편물)를 
관리 운영할 수 있는 프로그램이 필요하게 됩니다. 
메이저도모는 바로 이러한 메일링리스트 관리프로그램입니다.

이상하게도 메이저도가 인기가 없는것인지? 개발자가 게을러서인지 2년동안 버전업이 한번도 되지 않았더군요.
그럼 설치와 간단한 테스트를 해보도록 하겠습니다.


+ System Enviroment : 

- OS : TurboLinux7 Server(2.4.9), TurboLinux6.1k(2.2.x) ,RedHat7.3(2.4.18-5)
- Install : majordomo-1.94.5.tar.gz

+ Install Ready....(다운로드 사이트)

http://www.greatcircle.com/majordomo/

위의 사이트에서 최신버전을 다운로드 한다.

+ Majordomo 설치하기 : 

sueni@bbung ...]# tar xvfz majordomo-1.94.5.tar.gz

sueni@bbung ...]# cd majordomo-1.94.5/

sueni@bbung ...]# vi Makefile

#------------- Configure these items ----------------#
#

# Put the location of your Perl binary here:
PERL = /usr/bin/perl (perl 이 설치된경로 which perl로 확인.)

# What do you call your C compiler?
CC = gcc (C 컴파일러 지정)

# Where do you want Majordomo to be installed? This CANNOT be the
# current directory (where you unpacked the distribution)
W_HOME = /usr/local/majordomo (설치될 경로)

# Where do you want man pages to be installed?
MAN = /usr/man (사용자 메뉴얼 설치경로)

# You need to have or create a user and group which majordomo will run as.
# Enter the numeric UID and GID (not their names!) here:
W_USER = 500 (UID 설정, 숫자로 써야한다.)
W_GROUP = 500 (GID 설정) (uid와 gid는 id account 명령으로 확인한다.)

위의 것만 수정해 주면 된다.


- sendmail.cf 파일 수정하기.
W_GROUP =  이부분에 정의된 그룹은 sendmail.cf 파일의 Trusted users 에 반듯이 추가 되어 있는 그룹이어야 한다.
기본적으로 daemon, root, uucp 가 추가 되어 있다. 
추가할 때는 앞에 T를 붙여 주어야 한다.

sueni@bbung ...]# vi /etc/mail/sendmail.cf

#####################
# Trusted users #
#####################

# this is equivalent to setting class "t"
#Ft/etc/mail/trusted-users
Troot
Tdaemon
Tuucp
Tsyoh (현재 설정된 GROUP_ID)
sueni@bbung ...]# /etc/rc.d/init.d/sendmail restart 센드메일환경설정 파일은 컴파일 전에 반듯이 수정해야 한다. 다음은 컴파일시 majordomo.cf Configuration File 이 생성되지 않으므로 샘플을 Copy 해서 사용하도록 한다. sueni@bbung ...]# cp sample.cf majordomo.cf sueni@bbung ...]# vi majordomo.cf

# $whereami -- What machine am I running on?
#
$whereami = "mail.sueni.osy"; (메일링 리스트를 운영할 서버의 도메인이름 입력.)

# $whoami -- Who do users send requests to me as?
#
$whoami = "Majordomo@$whereami";
(메일링 리스트에서 가입자의 요청을 처리하는 메일주소 기본설정 그대로 사용.)

# $whoami_owner -- Who is the owner of the above, in case of problems?
#
$whoami_owner = "syoh@$whereami"; (메일링리스트관리자입력)

# $homedir -- Where can I find my extra .pl files, like majordomo.pl?
# the environment variable HOME is set by the wrapper
#
if ( defined $ENV{"HOME"}) {
$homedir = $ENV{"HOME"};
} else {
$homedir = "/usr/local/majordomo"; (메이저도모설치경로입력)
}

# $listdir -- Where are the mailing lists?
#
$listdir = "$homedir/lists";

# $digest_work_dir -- the parent directory for digest's queue area
# Each list must have a subdirectory under this directory in order for
# digest to work. E.G. The bblisa list would use:
# /usr/local/mail/digest/bblisa
# as its directory.
#
$digest_work_dir = "/usr/local/mail/digest";

# $log -- Where do I write my log?
#
$log = "$homedir/Log";

# $sendmail_command -- Pathname to the sendmail program
# usually /usr/lib/sendmail, but some newer BSD systems
# seem to prefer /usr/sbin/sendmail
#
#$sendmail_command = "/usr/lib/sendmail";
$sendmail_command = "/usr/sbin/sendmail"; (센드메일 경로 설정)


나머지는 특별히 설정하지 않아도 상관없다.

- 컴파일하기.

sueni@bbung ...]# make wrapper

sueni@bbung ...]# make install

sueni@bbung ...]# make install-wrapper

sueni@bbung ...]# cd /usr/local/majordomo

sueni@bbung ...]$ ./wrapper config-test
               (메일링리스트 관리자 계정으로 실행 해도 된다.)

------------------------------------------------------------
---------------- Config-test for Majordomo ----------------
------------------------------------------------------------


--------------------- Obvious things: ---------------------
------------------ environment variables ------------------
HOME=/usr/local/majordomo
LOGNAME=syoh
MAJORDOMO_CF=/usr/local/majordomo/majordomo.cf
PATH=/bin:/usr/bin:/usr/ucb
SHELL=/bin/sh
USER=syoh
--------------------- euid/egid checks ---------------------
effective user = syoh (uid 500)
effective group = syoh syoh (gid 500 500 )
---------------------- uid/gid checks ----------------------
real user = syoh (uid 500)
real group = syoh syoh (gid 500 500 )
------------------------------------------------------------

Non obvious things that cause headaches:

------------------------------------------------------------
Good: 'require'd /usr/local/majordomo/majordomo.cf okay.
Good: found ctime.pl okay.
Good: found majordomo_version.pl okay.
Good: found majordomo.pl okay.
Good: found shlock.pl okay.
Good: found config_parse.pl okay.

You're running Majordomo Version 1.94.5.
..........

중간생략...

...........
Good: yup!
----------------------- end of tests -----------------------


Nothing bad found! Majordomo _should_ work correctly.

If it doesn't, check your configuration file
(/usr/local/majordomo/majordomo.cf)
closely, and if it still looks okay, consider asking the majordomo-users
mailing list at "
majordomo-users at greatcircle.com" for assistance. Be sure
and fully specify what your problems are, and what type of machine (and
operating system) you are using.

Enjoy!

I see you haven't registered this version of Majordomo.
By registering, you will be notified of patches and further releases
of Majordomo. Shall I send email to
majordomo-registration at greatcircle.com
to register this version? (I'll cc syoh at mail.sueni.osy)
[yes]


위와 같이 정상적으로 컴파일 되었음을 알려준다.

이제 sendmail의  메일 엘리어스를 메이저도모의 엘리어스로 함께 사용할 수 있도록 
sendmail.cf의 다음 부분을 추가해 주도록 한다.

sueni@bbung ...]# vi /etc/mail/sendmail.cf

# location of alias file
O AliasFile=/etc/mail/aliases
O AliasFile=/etc/mail/majordomo.aliases

이제 메이저도모의 aliases 파일을 소스파일에서 가져다가 수정해 주어야 한다.

sueni@bbung ...]# cp /(TarBall)/(SOURCE)/majordomo-
1.94.5/majordomo.aliases /etc/mail/majordomo.aliases
majordomo.aliases파일은 보통 메이저도모가 설치된 곳에서 사용을 하지만, 관리상 편의
를 위해 /etc/mail에 파일을 두는 것이다.

sueni@bbung ...]# chown syoh:syoh /etc/mail/majordomo.aliases

sueni@bbung ...]$ vi /etc/mail/majordomo.aliases

# The aliases file for majordomo. This works best if you tell sendmail about it
# in your sendmail.cf file (either /usr/lib/sendmail.cf or /etc/sendmail.cf).
#
# You need to be running a recent (8.6, at least) version of sendmail; one that
# groks multiple alias files.
#
# Look for a line that says "OA/usr/lib/aliases" or somesuch, and add a line below
# it, w/o the leading # sign, that looks like this:
#
# OA/usr/test/majordomo/majordomo.aliases
#
# After doing this, you should refreeze the sendmail cf via '/usr/lib/sendmail -bz' and
# restart sendmail.
#

majordomo: "|/usr/local/majordomo/wrapper majordomo" (설치경로로 수정한다.)
majordomo-owner: syoh
owner-majordomo: syoh

test: "|/usr/local/majordomo/wrapper resend -l test test-list"
test-list: :include:/usr/local/majordomo/lists/test
owner-test: syoh
test-owner: syoh
test-request: syoh

위의 파일에서 메이저도모가 설치된 경로로 수정하거나 메이저도모 사용자를 수정해 주면 된다.
이것은 테스트를 위한것이며 나중에 다시 수정해 주어야 한다.

sueni@bbung ...]# newaliases

/etc/mail/aliases: 38 aliases, longest 10 bytes, 377 bytes total
/etc/mail/majordomo.aliases: 8 aliases, longest 56 bytes, 241 bytes total
엘리어스 설정을 한 후, 테스트를 위해 메이저도모가 설치된 곳의 lists 디렉토리에 test라는 파일을 만든다. (이하의 작업은 일반계정으로 해도 된다) sueni@bbung ...]$
touch /usr/local/majordomo/lists/test sueni@bbung ...]$ echo 'This mail is test' | /usr/sbin/sendmail - v majordomo majordomo... aliased to "|/usr/local/majordomo/wrapper majordomo" "|/usr/local/majordomo/wrapper majordomo"... Connecting to prog... "|/usr/local/majordomo/wrapper majordomo"... Sent 위와 같이 나오면 정상작동 하는 것이며, 메일링 리스트 관리자에게 다음과 같은 메시지가 온다.

From syoh at mail.sueni.osy Thu Jul 18 04:49:55 2002
Date: Thu, 18 Jul 2002 04:49:53 +0900
To:
syoh at mail.sueni.osy
From: Majordomo at mail.sueni.osy
Subject: Majordomo results
Reply-To:
Majordomo at mail.sueni.osy

--
>>>> lists
Majordomo at mail.sueni.osy serves the following lists:

test

Use the 'info ' command to get more information
about a specific list.
다음과 같은 메시지가 나온다면...
majordomo... aliased to "|/usr/local/majordomo/wrapper majordomo"
  "|/usr/local/majordomo/wrapper majordomo"... Connecting to prog...
  "|/usr/local/majordomo/wrapper majordomo"... Service unavailable
  syoh... Connecting to local...
  syoh... Sent

sueni@bbung ...]# cd /etc/smrsh

sueni@bbung ...]# ln -sf /usr/local/majordomo/wrapper

테스트가 끝났으면 test 파일을 삭제한 후 다른 이름으로 파일을 만든후 
aliases파일의 설정을 변경하여 실제로 테스트 해보도록 한다.

sueni@bbung ...]# vi /etc/mail/majordom.aliases

certwiz: "|/usr/local/majordomo/wrapper resend -l certwiz certwiz-list"
certwiz-list: :include:/usr/local/majordomo/lists/certwiz
owner-certwiz: syoh
certwiz-owner: syoh
certwiz-request: "|/usr/local/majordomo/wrapper majordomo -l certwiz"

파일 생성 후 이메일 주소를 기입한다.
sueni@bbung ...]# touch /usr/local/majordomo/lists/certwiz

sueni@bbung ...]# vi /usr/local/majordomo/lists/certwiz

syoh at sueni.osy
sueni at sueni.osy
wowpcs at sueni.osy
manpage at sueni.osy
certwiz at sueni.osy

sueni@bbung ...]# newaliases

sueni@bbung ...]# /etc/rc.d/init.d/sendmail restart

혹시 퍼미션 에러가 난다면 다음과 같이 해줍니다.

sueni@bbung ...]# chmod 751 /usr/local/majordomo/lists

sueni@bbung ...]# chmod 644 /usr/local/majordomo/certwiz(생성파일)

sueni@bbung ...]# echo 'hi This mail is testing' | /usr/sbin/sendmail -v certwiz

certwiz... aliased to "|/usr/local/majordomo/wrapper resend -l certwiz certwiz-list"
"|/usr/local/majordomo/wrapper resend -l certwiz certwiz-list"... Connecting to prog...

"|/usr/local/majordomo/wrapper resend -l certwiz certwiz-list"... Sent
정상적으로 작동 한다면 certwiz 파일에 추가된 모든 사용자에게 'hi This mail is testing' 내용의 메일이
전달 되었을 것이다.
혹시 리턴되어지는 메일이 있는지 잘 확인해 보기 바란다.

메이저도모를 웹상에서 구현하고자 한다면 다음과 같은 사이트를 참고 하기 바란다.

http://www.netspace.org/~dwb/lwgate/


참고사이트 : 
http://kldp.org/KoreanDoc/html/Majordomo-KLDP/Majordomo-KLDP.html#toc13

+GNU GPL. www.manpage.biz 오수영:)

[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=861


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
(주) 수퍼유저