아래를 실행하여 Sendmail이 필요로 하는 group들을 만든다:
groupadd -g 1 bin groupadd -g 2 kmem groupadd -g 3 mail useradd -u 1 -g bin -d /bin -s /bin/sh bin
Sendmail은 밖으로 나가는 메일을 /var/spool/mqueue 디렉토리에 넣어둔다. 들어오는 메일은 Sendmail에 의해 Procmail로 돌려지므로 우리는 /var/mail 이라는 디렉토리도 필요하다. 이 디렉토리들을 생성하고 알맞은 권한을 설정한다:
mkdir /var/spool mkdir /var/mail cd /var/spool; ln -s ../mail mail chmod 700 /var/spool/mqueue chmod 775 /var/mail chgrp mail /var/mail chmod 1777 /tmp
cd src ./Build; ./Build install
Sendmail을 설정하는 것은 앞의 것들처럼 쉽지는 않다. Sendmail을 설정하는 동안 여러분이 고려해야 할 사항이 많으며 내가 그 모든 것을 설명할 수는 없다. 이것이 우리가 지금은 기본적이고 표준적인 설정을 하는 이유이다. Sendmail을 여러분의 기호에 맞도록 고치고 싶다면 할 수 있지만 이 문서는 그 작업에 적합하지는 않다. 여러분이 특정한 기능을 사용하려 한다면 이미 존재하는 /etc/sendmail.cf (혹은 /etc/mail/sendmail.cf) 파일을 사용할 수 있다.
cf/lfs.mc
파일을 새로 만든다:
OSTYPE(LFS) FEATURE(nouucp) define(`LOCAL_MAILER_PATH', /usr/bin/procmail) MAILER(local) MAILER(smtp)
touch ostype/LFS.m4
를 실행하여 빈 ostype/LFS.m4
파일을 만든다. m4 m4/cf.m4 cf/lfs.mc > cf/lfs.cf
를 실행하여 lfs.mc
파일을 컴파일한다./etc/sendmail.cf
로 복사한다.touch /etc/aliases
를 실행하여 빈 /etc/aliases 파일을 만든다.sendmail -v -bi
를 실행하여 이 (빈) alias 데이타베이스를
초기화한다.
make; make install; make install-suid
/etc/init.d/sendmail
파일을 새로 만든다:
#!/bin/sh # Begin /etc/init.d/sendmail check_status() { if [ $? = 0 ] then echo "OK" else echo "FAILED" fi } case "$1" in start) echo -n "Starting Sendmail..." start-stop-daemon -S -q -o -x /usr/sbin/sendmail -- -bd check_status ;; stop) echo -n "Stopping Sendmail..." start-stop-daemon -K -q -o -p /var/run/sendmail.pid check_status ;; reload) echo -n "Reloading Sendmail configuration file..." start-stop-daemon -K -q -s 1 -p /var/run/sendmail.pid check_status ;; restart) echo -n "Stopping Sendmail..." start-stop-daemon -K -q -o -p /var/run/sendmail.pid check_status sleep 1 echo -n "Starting Sendmail..." start-stop-daemon -S -q -o -x /usr/sbin/sendmail -- -bd check_status ;; *) echo "Usage: $0 {start|stop|reload|restart}" exit 1 ;; esac # End /etc/init.d/sendmail
chmod 755 /etc/init.d/sendmail
을 실행하여 알맞은 권한을
설정한다.
cd /etc/init.d/rc2.d; ln -s ../init.d/sendmail S20sendmail cd ../rc0.d; ln -s ../init.d/sendmail K20sendmail cd ../rc6.d; ln -s ../init.d/sendmail K20sendmail
groupadd -g 65534 nogroup groupadd -g 4 ftp
useradd -u 65534 -g nogroup -d /home nobody useradd -u 4 -g ftp -s /bin/sh -m ftp
./configure make; make install
/etc/init.d/proftpd
파일을 새로 만든다:
#!/bin/sh # Begin /etc/init.d/proftpd check_status() { if [ $? = 0 ] then echo "OK" else echo "FAILED" fi } case "$1" in start) echo -n "Starting Pro FTP daemon..." start-stop-daemon -S -q -o -x /usr/sbin/proftpd check_status ;; stop) echo -n "Stopping Pro FTP daemon..." start-stop-daemon -K -q -o -x /usr/sbin/proftpd check_status ;; restart) echo -n "Stopping Pro FTP daemon..." start-stop-daemon -K -q -o -x /usr/sbin/proftpd check_status sleep 1 echo -n "Starting Pro FTP daemon..." start-stop-daemon -S -q -o -x /usr/sbin/proftpd check_status ;; *) echo "Usage: $0 {start|stop|restart}" ;; esac # End /etc/init.d/proftpd
chmod 755 /etc/init.d/proftpd
를 실행하여 알맞은 권한을
설정한다.
cd /etc/rc2.d; ln -s ../init.d/proftpd S40proftpd cd ../rc0.d; ln -s ../init.d/proftpd K40proftpd cd ../rc6.d; ln -s ../init.d/proftpd K40proftpd
./configure make; make install
설정할 것이 많지는 않다. 우리가 해야 할 것은 단지 /usr/apache/man 경로를 /usr/share/misc/man.conf에 추가하는 것 뿐이다.
/etc/init.d/apache
파일을 새로 만든다:
#!/bin/sh # Begin /etc/init.d/apache case "$1" in start) echo -n "Starting Apache HTTP daemon..." /usr/apache/bin/apachectl start ;; stop) echo -n "Stopping Apache HTTP daemon..." /usr/apache/bin/apachectl stop ;; restart) echo -n "Restarting Apache HTTP daemon..." /usr/apache/bin/apachectl restart ;; force-restart) echo -n "Stopping Apache HTTP daemon..." /usr/apache/bin/apachectl stop sleep 1 echo -n "Starting Apache HTTP daemon..." /usr/apache/bin/apachectl start ;; *) echo "Usage: $0 {start|stop|restart|force-restart}" ;; esac # End /etc/init.d/apache
chmod 755 /etc/init.d/apache
를 실행하여 알맞은 권한을
설정한다.
cd /etc/rc2.d; ln -s ../init.d/apache S50apache cd ../rc0.d; ln -s ../init.d/apache K50apache cd ../rc6.d; ln -s ../init.d/apache K50apache
./configure make; make install
/etc/inetd.conf
파일을 새로 만든다:
# Begin /etc/inetd.conf telnet stream tcp nowait root /usr/sbin/in.telnetd # End /etc/inetd.conf
/etc/init.d/inetd
파일을 새로 만든다:
#!/bin/sh # Begin /etc/init.d/inetd check_status() { if [ $? = 0 ] then echo "OK" else echo "FAILED" fi } case "$1" in start) echo -n "Starting Internet Server daemon..." start-stop-daemon -S -q -o -x /usr/sbin/inetd check_status ;; stop) echo -n "Stopping Internet Server daemon..." start-stop-daemon -K -q -o -p /var/run/inetd.pid check_status ;; reload) echo -n "Reloading Internet Server configuration file..." start-stop-daemon -K -q -s 1 -p /var/run/inetd.pid check_status ;; restart) echo -n "Stopping Internet Server daemon..." start-stop-daemon -K -q -o -p /var/run/inetd.pid check_status sleep 1 echo -n "Starting Internet Server daemon..." start-stop-daemon -S -q -o -x /usr/sbin/inetd check_status ;; *) echo "Usage: $0 {start|stop|reload|restart}" ;; esac # End /etc/init.d/inetd
chmod 755 /etc/init.d/inetd
를 실행하여 알맞은 권한을
설정한다.
cd /etc/rc2.d; ln -s ../init.d/inetd S30inetd cd ../rc0.d; ln -s ../init.d/inetd K30inetd cd ../rc6.d; ln -s ../init.d/inetd K30 inetd
여러분이 인터넷에 연결되기 전에 커널이 ppp를 지원해야 한다. 이는 커널 안에 ppp 지원을 직접 넣어서 컴파일하거나 ppp 드라이버를 필요할 때 로드할 수 있는 모듈로 만듦으로써 가능하다. 어떤 방법은 선택하든 필요하다면 지금 커널을 재 컴파일하여 작업을 하라. 이미 여러분의 LFS 커널이 ppp를 지원한다면 커널을 재 설정할 필욘 없다.
groupadd -g7 daemon
을 실행하여 damon group을 만든다.
./configure make; make install
/etc/resolv.conf
파일을 새로 만든다:
# Begin /etc/resolv.conf nameserver <IP address of your ISP's primary DNS server> nameserver <IP address of your ISP's secundary DNS server> # End /etc/resolv.conf
/etc/ppp/peers
디렉토리를 만든다./etc/ppp/peers/provider
파일을 새로 만든다:
# Begin /etc/ppp/peers/provider noauth connect "/usr/sbin/chat -v -f /etc/chatscripts/provider" /dev/ttyS1 115200 defaultroute noipdefault # End /etc/ppp/peers/provider
/etc/chatscripts
디렉토리를 만든다./etc/chatscripts/provider
파일을 새로
만든다:
# Begin /etc/chatscripts/provider ABORT BUSY ABORT "NO CARRIER" ABORT VOICE ABORT "NO DIALTONE" ABORT "NO ANSWER" "" ATZ OK ATDT <ISP's phonenumber> TIMEOUT 35 CONNECT '' TIMEOUT 10 ogin: \q<username> TIMEOUT 10 assword: \q<mysecretpassword> # End /etc/chatscripts/provider
예제 스크립트들에서 보듯이 (이것들은 내가 X를 쓰지 않을 때 실제로 사용하는 스크립트들이다) 위에서 나는 내 ISP로 pap이나 chap을 통한 인증 대신 chatscripts를 이용하여 접속하였다. 내 ISP가 pap를 지원하긴 하지만 나는 이 장/단점을 모두 가진 약간 다른 방식으로 하기로 결정하였다. 내 경우에 장점이 단점보다 많다. 이 방식으로 나는 내 접속 과정에 대한 더 많은 제어권을 가질 수 있고 언제 어떤 일이 일어나는지를 더 자세히 알 수 있었다.
예를 들어 내가 접속할 때 대부분 나는 tail -f /var/log/syslog
를 실행하는 윈도우를 열어 놓아서 사용자 명이나 암호가 보내지는 시기
같은 것들을 직접 관찰할 수 있다.