root@wl ~ # wget ftp://ftp.sunfreeware.com/pub/freeware/intel/9/make-3.80-sol9-intel-local.gz root@wl ~ # gunzip make-3.80-sol9-intel-local.gz root@wl ~ # pkgadd -d make-3.80-sol9-intel-local
root@wl ~ # wget http://downloads.sleepycat.com/db-4.4.16.tar.gz root@wl ~ # gtar xvfz db-4.4.20.tar.gz root@wl ~ # cd db-4.4.20 root@wl ~/db-4.4.20 # cd build_unix root@wl ~/db-4.4.20/build_unix # ../dist/configure root@wl ~/db-4.4.20/build_unix # make root@wl ~/db-4.4.20/build_unix # make install root@wl ~/db-4.4.20/build_unix # vi /etc/profile # for BerkeleyDB located at /usr/local/BerkeleyDB.4.4 if [ -d /usr/local/BerkeleyDB.4.4 ] then LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/BerkeleyDB.4.4/lib fi root@wl ~/db-4.4.20/build_unix # . /etc/profile
root@wl ~ # wget ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.21.tar.gz root@wl ~ # gtar xvfz cyrus-sasl-2.1.21.tar.gz root@wl ~ # cd cyrus-sasl-2.1.21 root@wl ~/cyrus-sasl-2.1.21 # cp /usr/include/sys/des.h include/ 1) root@wl ~/cyrus-sasl-2.1.21 # ./configure \ --enable-login \ --with-pwcheck \ --disable-digest \ --disable-srp \ --disable-krb4 \ --disable-gssapi \ --disable-anon root@wl ~/cyrus-sasl-2.1.21 # which make 2) /usr/local/bin/make root@wl ~/cyrus-sasl-2.1.21 # make root@wl ~/cyrus-sasl-2.1.21 # make install root@wl ~/cyrus-sasl-2.1.21 # ln -s /usr/local/lib/sasl2 /usr/lib/sasl2 3) root@wl ~/cyrus-sasl-2.1.21 # mkdir -p /var/state/saslauthd 4) root@wl ~/cyrus-sasl-2.1.21 # vi /usr/lib/sasl2/Sendmail.conf pwcheck_method: saslauthd root@wl ~/cyrus-sasl-2.1.21 # /usr/local/sbin/saslauthd -v 5) saslauthd 2.1.21 authentication mechanisms: getpwent pam rimap shadow root@wl ~/cyrus-sasl-2.1.21 # /usr/local/sbin/saslauthd -a pam 6) root@wl ~/cyrus-sasl-2.1.21 # vi /etc/init.d/saslauthd 6) #!/bin/sh case "$1" in start) /usr/local/sbin/saslauthd -a pam ;; stop) pkill saslauthd ;; *) echo "Usage: saslauthd {start|stop}" exit 1 esac exit 0 root@wl ~/cyrus-sasl-2.1.21 # chmod 744 /etc/init.d/saslauthd root@wl ~/cyrus-sasl-2.1.21 # ln -s /etc/init.d/saslauthd /etc/rc2.d/S87saslauthd root@wl ~/cyrus-sasl-2.1.21 # ln -s /etc/init.d/saslauthd /etc/rc0.d/K37saslauthd root@wl ~/cyrus-sasl-2.1.21 # ln -s /etc/init.d/saslauthd /etc/rc1.d/K37saslauthd root@wl ~/cyrus-sasl-2.1.21 # ln -s /etc/init.d/saslauthd /etc/rcS.d/K37saslauthd1) des.h를 찾지 못하기 때문에 복사해준다.
root@wl ~ # /etc/init.d/sendmail stop 1) root@wl ~ # pkgrm SUNWsndmr 1) root@wl ~ # pkgrm SUNWsndmu 1) root@wl ~ # groupadd -g 25 smmsp 2) root@wl ~ # useradd -c "SendMail Message Submission Program" -u 25 -g smmsp smmsp 2) root@wl ~ # wget ftp://ftp.sendmail.org/pub/sendmail/sendmail.8.13.8.tar.gz root@wl ~ # gtar xvfz sendmail.8.13.8.tar.gz root@wl ~ # cd sendmail-8.13.8 root@wl ~/sendmail-8.13.8 # vi ./devtools/Site/site.config.m4 3) dnl makemap APPENDDEF(`confMAPDEF', `-DNEWDB') APPENDDEF(`confLIBDIRS', `-L/usr/local/BerkeleyDB.4.4/lib') APPENDDEF(`confINCDIRS', `-I/usr/local/BerkeleyDB.4.4/include') dnl SASLv2 Support APPENDDEF(`confENVDEF', `-DSASL=2') APPENDDEF(`conf_sendmail_LIBS', `-lsasl2') APPENDDEF(`confLIBDIRS', `-L/usr/local/lib/sasl2') APPENDDEF(`confINCDIRS', `-I/usr/local/include/sasl') dnl LDAP Support for Solaris 9 APPENDDEF(`confMAPDEF', `-DLDAPMAP') APPENDDEF(`confENVDEF', `-DSM_CONF_LDAP_MEMFREE') APPENDDEF(`confLIBS', `-lldap') dnl OpenSSL Support APPENDDEF(`confENVDEF', `-DSTARTTLS') APPENDDEF(`confLIBS', `-lssl -lcrypto') APPENDDEF(`confLIBDIRS', `-L/usr/local/ssl/lib') APPENDDEF(`confINCDIRS', `-I/usr/local/ssl/include') root@wl ~/sendmail-8.13.8 # ./Build 4) root@wl ~/sendmail-8.13.8 # mkdir /usr/share/man/cat1; mkdir /usr/share/man/cat5; mkdir /usr/share/man/cat8 5) root@wl ~/sendmail-8.13.8 # ./Build install root@wl ~/sendmail-8.13.8 # cp obj.SunOS.5.9.i86pc/mail.local/mail.local /usr/lib 6) root@wl ~/sendmail-8.13.8 # /usr/lib/sendmail -d0 < /dev/null 7) Version 8.13.8 Compiled with: DNSMAP LDAPMAP LOG MAP_REGEX MATCHGECOS MILTER MIME7TO8 MIME8TO7 NAMED_BIND NDBM NETINET NETINET6 NETUNIX NEWDB NIS NISPLUS PIPELINING SASLv2 SCANF STARTTLS USERDB USE_LDAP_INIT XDEBUG ============ SYSTEM IDENTITY (after readcf) ============ (short domain name) $w = wl (canonical domain name) $j = wl.solanara.net (subdomain name) $m = solanara.net (node name) $k = wl ======================================================== Recipient names must be specified1) 솔라리스9에 설치되어있는 Sendmail을 삭제한다.
root@wl ~/sendmail-8.13.8 # cd ./cf/cf 1) root@wl ~/sendmail-8.13.8/cf/cf # cp generic-solaris.mc sendmail.mc 2) root@wl ~/sendmail-8.13.8/cf/cf # vi sendmail.mc 3) define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy')dnl define(`confAUTH_MECHANISMS', `DIGEST-MD5 CRAM-MD5 PLAIN LOGIN')dnl TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 PLAIN LOGIN')dnl define(`CERT_DIR', `/usr/local/ssl/certs') define(`confCACERT', `CERT_DIR/ca.crt') define(`confCACERT_PATH', `CERT_DIR') define(`confSERVER_CERT', `CERT_DIR/signed-req.pem') define(`confSERVER_KEY', `CERT_DIR/req.key') define(`confCLIENT_CERT', `CERT_DIR/signed-req.pem') define(`confCLIENT_KEY', `CERT_DIR/req.key') FEATURE(dnsbl, `blackholes.mail-abuse.org', `Rejected ($&{client_addr}) - see http://www.mail-abuse.org/rbl/')dnl FEATURE(dnsbl, `spamlist.or.kr', `Rejected ($&{client_addr}) - see http://www.kisarbl.or.kr/')dnl FEATURE(dnsbl, `cbl.abuseat.org', `Rejected ($&{client_addr}) - see http://cbl.abuseat.org')dnl FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl FEATURE(`access_db',`hash -o /etc/mail/access.db')dnl FEATURE(`smrsh',`/usr/lib/smrsh')dnl FEATURE(use_cw_file)dnl FEATURE(use_ct_file)dnl FEATURE(`always_add_domain')dnl FEATURE(`accept_unqualified_senders')dnl FEATURE(`accept_unresolvable_domains')dnl FEATURE(`relay_entire_domain')dnl root@wl ~/sendmail-8.13.8/cf/cf # ./Build sendmail.cf 4) root@wl ~/sendmail-8.13.8/cf/cf # cp /etc/mail/sendmail.cf /etc/mail/sendmail.cf.old 5) root@wl ~/sendmail-8.13.8/cf/cf # cp /etc/mail/submit.cf /etc/mail/submit.cf.old root@wl ~/sendmail-8.13.8/cf/cf # ./Build install-cf 6) root@wl ~/sendmail-8.13.8/cf/cf # cd ../..1) cf 디렉토리안의 cf 디렉토리로 이동한다.(오타가 아니다)
root@wl ~/sendmail-8.13.8 # crle -u -l /usr/local/lib 1) root@wl ~/sendmail-8.13.8 # crle -u -l /usr/local/ssl/lib root@wl ~/sendmail-8.13.8 # crle -u -l /usr/local/BerkeleyDB.4.4/lib root@wl ~/sendmail-8.13.8 # cd /etc/mail root@wl /etc/mail # vi trusted-users 2) root root@wl /etc/mail # vi local-host-names 3) mydomain.com solanara.net root@wl /etc/mail # vi relay-domains 4) solanara.net root@wl /etc/mail # vi access 5) 127.0.0.1 RELAY spam.com REJECT root@wl /etc/mail # makemap hash access < access root@wl /etc/mail # vi virtusertable 6) admin@solanara.net hana admin@solanara2.net hana2 root@wl /etc/mail # makemap hash virtusertable < virtusertable root@wl /etc/mail # vi aliases 7) # The program "newaliases" must be run after this file is updated # for any changes to show through to sendmail. # The following alias is required by the mail protocol, RFC 2821 # Set it to the address of a HUMAN who deals with this system's mail problems. postmaster: root # Alias for mailer daemon; returned messages from our MAILER-DAEMON # should be routed to our local Postmaster. MAILER-DAEMON: postmaster # General redirections for pseudo accounts. bin: root daemon: root system: root toor: root uucp: root manager: root dumper: root operator: root decode: root nobody: /dev/null root@wl /etc/mail # mkdir /var/spool/mqueue/ 8) root@wl /etc/mail # chown root:bin /var/spool/mqueue/ root@wl /etc/mail # chmod 750 /var/spool/mqueue/ root@wl /etc/mail # newaliases 9)1) LD_LIBRARY_PATH와 유사하다. SENDMAIL에서 fork가 되는 프로세스중 환경설정이 안되는 경우가 있어 이렇게 해결했다.
root@wl /etc/mail # vi /etc/init.d/sendmail
#!/bin/sh
# 출처 모름. 윈디하나가 만든건 아님 ^^
version=`echo \$Z | /usr/lib/sendmail -bt -d0 | grep Version | awk '{print $2}'`
case "$1" in
start)
# Start daemons.
echo "Starting Sendmail $version"
# Enable the below line to set serious logging for trouble shooting
# /usr/lib/sendmail -O LogLevel=14 -L sm-mta -bd -q1h
/usr/lib/sendmail -L sm-mta -bd -q1h
/usr/lib/sendmail -L sm-msp-queue -Ac -q30m
;;
stop)
# Stop daemons.
echo "Shutting down Sendmail $version"
kill `cat /var/run/sendmail.pid | head -1`
kill `cat /var/spool/clientmqueue/sm-client.pid | head -1`
;;
*)
echo "Usage: sendmail {start|stop}"
exit 1
esac
exit 0
root@wl /etc/mail # chmod 744 /etc/init.d/sendmail
root@wl /etc/mail # ln -s /etc/init.d/sendmail /etc/rc0.d/K36sendmail
root@wl /etc/mail # ln -s /etc/init.d/sendmail /etc/rc1.d/K36sendmail
root@wl /etc/mail # ln -s /etc/init.d/sendmail /etc/rc2.d/S88sendmail
root@wl /etc/mail # ln -s /etc/init.d/sendmail /etc/rcS.d/K36sendmail
root@wl /etc/mail # /etc/init.d/sendmail start
root@wl /etc/mail # telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 xxx.xxxx.xxx ESMTP Sendmail 8.13.8/8.13.8; Mon, 14 Nov 2005 09:53:20 +0900 (KST) EHLO localhost 250-xxx.xxxx.xxx Hello localhost [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-AUTH CRAM-MD5 PLAIN LOGIN 250-STARTTLS 250-DELIVERBY 250 HELP quit 221 2.0.0 xxx.xxxx.xxx closing connection Connection to localhost closed by foreign host. root@wl /etc/mail #
root@wl ~ # wget ftp://ftp.qualcomm.com/eudora/servers/unix/popper/qpopper4.0.8.tar.gz
root@wl ~ # gtar xvfz qpopper4.0.8.tar.gz
root@wl ~ # cd qpopper4.0.8
root@wl ~/qpopper4.0.8 # ./configure \
--enable-specialauth \
--with-openssl=/usr/local/ssl \
--enable-timing \
--enable-debugging \ 1)
--enable-standalone
root@wl ~/qpopper4.0.8 # make
root@wl ~/qpopper4.0.8 # make install
1) 디버깅 가능하도록 컴파일 했다. 설치시 디버깅을 위해 트레이스 파일을 참고하기 위함이다. 물론 이 문서 내용대로 하면 문제 없다. 트레이싱 파일의 크기가 크기 때문에 필요 없다면 과감히 이 라인을 삭제한다.
root@wl ~ # mkdir /etc/mail/pop
root@wl ~ # vi /etc/mail/pop/qpopper.config
set tls-support = alternate-port
set tls-version = default
set tls-server-cert-file = /etc/mail/certs/qpopper_cert.pem
set tls-options = 0x00000800
set clear-text-password = tls
set chunky-writes = tls
root@wl ~ # mkdir /etc/mail/certs
root@wl ~ # cat /usr/local/ssl/certs/req.key > /etc/mail/certs/qpopper_cert.pem
root@wl ~ # cat /usr/local/ssl/certs/signed-req.pem >> /etc/mail/certs/qpopper_cert.pem
root@wl ~ # chmod 600 /etc/mail/certs/qpopper_cert.pem
root@wl ~ # vi /etc/init.d/qpopper
#!/bin/sh
case "$1" in
start)
/usr/local/sbin/popper 995 -S -f /etc/mail/pop/qpopper.config
/usr/local/sbin/popper -S -f /etc/mail/pop/qpopper.config
;;
stop)
pkill popper
;;
*)
echo "Usage: qpopper {start|stop}"
exit 1
esac
exit 0
root@wl ~ # chmod 744 /etc/init.d/qpopper
root@wl ~ # ln -s /etc/init.d/qpopper /etc/rc2.d/S99qpopper
root@wl ~ # /usr/local/sbin/popper 995 -S -d -f /etc/mail/pop/qpopper.config -t /var/log/qpoppertrace 1)
root@wl ~ # /usr/local/sbin/popper -S -d -f /etc/mail/pop/qpopper.config -t /var/log/qpoppertrace 2)
1) TLS(995번 포트)를 사용했다. -t /var/log/qpoppertrace 옵션과 -d 옵션을 주면 /var/log/qpoppertrace 에 트레이싱 로그가 저장된다. 문제가 발생하면 열어보면 된다. 트레이싱 로그가 꽤 크기 때문에 주의하자.root@wl ~ # cd /usr/lib/mail/cf root@wl /usr/lib/mail/cf # cp main.mc new.mc root@wl /usr/lib/mail/cf # vi new.mc # new.mc를 고쳐 원하는 세팅을 한다. root@wl /usr/lib/mail/cf # make new.cf root@wl /usr/lib/mail/cf # cp new.cf /etc/mail/sendmail.cf root@wl /usr/lib/mail/cf # /etc/init.d/sendmail restart※ 즉 main.mc를 베이스로 new.mc파일을 원하는대로 수정한 후 m4에 의해 컴파일 하면 된다. 아래는 new.mc의 내용이다.
# 최소화 OSTYPE(`solaris8')dnl DOMAIN(`generic')dnl MAILER(`local')dnl MAILER(`smtp')dnl
# 메일 서버 OSTYPE(`solaris8')dnl MAILER(`local')dnl MAILER(`smtp')dnl # 설치후 sendmail을 재시작한후 vi /etc/mail/local-host-names를 수정. 도메인을 적어줘야 한다.
# 인커밍 릴레이: 메일을 받은 경우, 메일을 로컬에 저장하는 대신 타 서버로 메일을 다시 전송한다. # 아래예제에서는 relay.mydomain.com으로 모든 메일을 전송한다. 이후 /etc/mail/relay-domains 을 수정해야 한다. OSTYPE(`solaris8')dnl DOMAIN(`solaris-antispam')dnl define(`SMART_HOST', 'relay.mydomain.com')dnl FEATURE(`relay_entire_domain')dnl MAILER(`local')dnl MAILER(`smtp')dnl
# 로컬 호스트 전송 전용. 25번 포트를 127.0.0.1에 한정하여 바인드한다. OSTYPE(`solaris8')dnl DOMAIN(`solaris-generic')dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA') MAILER(`local')dnl MAILER(`smtp')dnl
root@wl ~ # cd /etc/mail
root@wl /etc/mail # mkdir auth
root@wl /etc/mail # chmod 600 auth
root@wl /etc/mail # cd auth
root@wl /etc/mail/auth # vi ./auth/client-info
AuthInfo:xxx.xxx.com "U:root" "I:systemuser" "P:password" 1)
root@wl /etc/mail/auth # makemap hash client-info < client-info
root@wl /etc/mail/auth # chmod 600 client-info
root@wl /etc/mail/auth # cd ..
root@wl /etc/mail # cd /usr/lib/mail/cf
이후 위 챕터와 동일. new.mc 에 아래의 내용을 삽입한다.
define(`SMART_HOST',`xxx.xxx.com')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
FEATURE(`authinfo',`hash /etc/mail/auth/client-info')dnl
1) U: 계정이름, I: 유저설명 P: 패스워드 의 순서이다.|
|
Copyright © 2004-2010 Jo HoSeok. All rights reserved. |