ÇϳªÀÇ È£½ºÆ®¿¡ ¿¬°áµÈ µµ¸ÞÀÎ nobreak.com °ú kr.freebsd.org ¿¡ ´ëÇØ, ÀϹÝÀûÀ¸·Î nobreak@nobreak.com °ú nobreak@kr.freebsd.org ÀÇ ¼ö½ÅÀÚ´Â °°´Ù. ¿©±â¿¡¼´Â °¢°¢ÀÇ µµ¸ÞÀκ°·Î aliases Å×À̺íÀ» °®´Â °Í°ú °°ÀÌ, µµ¸ÞÀο¡ µû¶ó ¼ö½ÅµÇ´Â ÆíÁö¸¦ ´Ù¸£°Ô ó¸®ÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æº»´Ù. º» ±ÛÀÌ SendmailÀ» ÁÖÁ¦·Î ÇÏÁö´Â ¾Ê±â¿¡, SendmailÀ» ¾î´À Á¤µµ ¾Ë°í ÀÖ´Ù´Â °¡Á¤À¸·Î °ñÀÚ³»¿ë¸¸À» ´Ù·çµµ·Ï ÇϰڴÙ. Sendmail¿¡ Àͼ÷Ä¡ ¾Ê´Ù¸é ³»¿ëÀ» ÀÌÇØÇϱâ À§ÇØ RuleSet, m4, aliases, dbm/btree/hash µî¿¡ ´ëÇÑ »çÀüÇнÀÀÌ ÇÊ¿äÇÒ ¼öµµ ÀÖ´Ù.
¼³¸íÇϰíÀÚ ÇÏ´Â ¹æ¹ýÀº Sendmail 8.8 À̻󿡼 °¡´ÉÇϹǷÎ,¸ÕÀú ´ÙÀ½°ú °°ÀÌ ¼³Ä¡µÈ ¹öÁ¯À» È®ÀÎÇÑ´Ù.
$ telnet localhost smtp Trying 127.0.0.1... 220 kfug2.kr.freebsd.org ESMTP Sendmail 8.9.3/8.9.3
¹öÁ¯ÀÌ 8.8º¸´Ù ³·´Ù¸é, ftp://ftp.sendmail.org/pub/sendmail/ ¿¡¼ ÃֽŹöÁ¯À» ±¸Çϱ⠹ٶõ´Ù. Sendmail 8.2 À̻󿡼´Â domaintable Feature¸¦ »ç¿ëÇØ ±¸ÇöµÉ ¼ö ÀÖÁö¸¸, ¿©±â¼ Á¦½ÃÇÏ´Â Sendmail 8.8 ÀÌ»óÀÇ virtusertable Feature·Î ´ëüµÇ´Â Ãß¼¼À̹ǷΠ¿©±â¿¡¼´Â ´Ù·çÁö ¾Ê°Ú´Ù.
¸ÕÀú sendmail-VERSION/cf/cf/¿¡¼ ½Ã½ºÅÛ¿¡ ÀûÀýÇÑ mc ÆÄÀÏÀ» º¹»çÇÑ ÈÄ, Virtual Domain ¼³Á¤¿¡ ÇÊ¿äÇÑ virtusertable, genericstable Feature¸¦ Ãß°¡ÇÑ´Ù. ÀÛ¼ºµÈ mc ÆÄÀÏÀº ÀϹÝÀûÀ¸·Î ´ÙÀ½°ú °°ÀÌ º¸ÀδÙ.
* generic-bsd4.4.mc ÆÄÀÏÀ» »ç¿ëÇØ ÀÛ¼ºÇÑ freebsd.mc ÆÄÀÏ divert(0)dnl VERSIONID(`@(#)generic-bsd4.4.mc 8.7 (Berkeley) 5/19/1998') OSTYPE(bsd4.4)dnl DOMAIN(generic)dnl MAILER(local)dnl MAILER(smtp)dnl FEATURE(virtusertable, btree /etc/domainaliases.db)dnl FEATURE(genericstable, btree /etc/useraliases.db)dnl
virtusertable Feature´Â ¼ö½Å(in-bound)µÇ´Â ÆíÁö¸¦ ·ÎÄà »ç¿ëÀÚ·Î ¸ÅÇÎÇÏ´Â RuleSetÀ» »ý¼ºÇϰí, genericstable Feature´Â ¹Ý´ë·Î ¼Û½Å(out-bound)µÇ´Â ÆíÁö¿¡ ´ëÇØ ·ÎÄà À¯Àú¿¡ ´ëÇÑ ¸ÞÀÏÁÖ¼Ò(¸ÞÀÏ Çì´õ»óÀÇ From: Çʵå)¸¦ ¸ÅÇÎÇÏ´Â RuleSetÀ» »ý¼ºÇÑ´Ù. DNSÀÇ Forward Zone°ú Reverse ZoneÀ» »ý°¢ÇÏ¸é µÇ°Ú´Ù.
btree ´Â ÇØ´ç Å×À̺í(domainaliases.db)ÀÌ B-Tree(Berkeley DB) µ¥ÀÌÅͺ£À̽º ÇüÅ·ΠÀúÀåµÊÀ» ÀǹÌÇÑ´Ù. °¡´ÉÇÑ ´Ù¸¥ À¯ÇüÀ¸·Î´Â hash(Berkeley DB)¿Í dbm(NDBM)ÀÌ Àִµ¥, Å×À̺íÀÌ ¹æ´ëÇÒ °æ¿ì È¿À²Àº btree(Berkeley DB) > hash(Berkeley DB) > dbm(NDBM) ¼øÀÌ´Ù. ¼Óµµ°¡ ºü¸¥ btree¿Í hash¸¦ »ç¿ëÇϱâ À§Çؼ´Â Berkeley DB(FreeBSD¸¦ ºñ·ÔÇØ ¸î¸î Unix¿¡´Â ±âº»À¸·Î Æ÷ÇԵȴÙ)°¡ ¼³Ä¡µÇ¾î ÀÖ¾î¾ß Çϸç, sendmail°ú makemap ÄÄÆÄÀϽà -DNEWDB Ç÷¡±×(Berkeley DB°¡ ¼³Ä¡µÇ¾î ÀÖ´Ù¸é ÀÚµ¿À¸·Î -DNEWDB Ç÷¡±×°¡ »ç¿ëµÈ´Ù)¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù.
Berkeley DB°¡ ¼³Ä¡µÇ¾î ÀÖÁö ¾ÊÀ» °æ¿ì¿£ -DNDBM Ç÷¡±×(NDBM ¶óÀ̺귯¸®´Â ´ëºÎºÐÀÇ Unix¿¡ ±âº»À¸·Î Æ÷ÇԵȴÙ)·Î ÄÄÆÄÀÏ µÇ´Âµ¥ À̶§¿¡´Â DBMÀ» »ç¿ëÇÏ¿©¾ß ÇÑ´Ù. ¸®´ª½º¿Í °°ÀÌ Berkeley DBÀÇ GNUÆÇÀÎ GDBMÀÌ »ç¿ëµÇ´Â °æ¿ì¿£ º°µµÀÇ ³ë·Â¾øÀÌ ¼¼ Á¾·ùÀÇ DB¸¦ ¸ðµÎ ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù.
ÀÛ¼ºµÈ freebsd.mc ÆÄÀÏÀº ´ÙÀ½°ú °°ÀÌ m4(Macro Language Processor)¸¦ ÅëÇØ sendmail.cf·Î º¯È¯ÇÑ´Ù.
# cd sendmail-VERSION/cf/cf # m4 ../m4/cf.m4 freebsd.mc > freebsd.cf # cp freebsd.cf /etc/sendmail.cf
¸¸¾à ±âÁ¸ÀÇ sendmail.cf°¡ À¯ÁöµÇ¾î¾ß ÇÏ´Â »óȲÀ̶ó¸é, ½ÇÁ¦ º» µÎ Feature°¡ »ý¼ºÇÏ´Â ´ÙÀ½ÀÇ RuleSetÀ» Âü°íÇÏ¿© sendmail.cf¸¦ Á÷Á¢ ¼öÁ¤ÇÏ¿©µµ ÁÁ´Ù. (RuleSetÀÌ »ðÀԵǴ À§Ä¡¸¦ ÆÄ¾ÇÇϱâ À§ÇØ m4·Î sendmail.cf¸¦ »ý¼ºÇÏ¿© ºñ±³Çϱ⠹ٶõ´Ù)
* FEATURE(virtusertable, btree /etc/domainaliases.db)dnl # Virtual user table (maps incoming users) Kvirtuser btree /etc/domainaliases.db # handle virtual users (RuleSet 0ÀÇ Parse1 ¾Æ·¡¿¡ À§Ä¡) R$+ < @ $=w . > $: < $(virtuser $1 @ $2 $@ $1 $: @ $) > $1 < @ $2 . > R<@> $+ + $* < @ $* . > $: < $(virtuser $1 + * @ $3 $@ $1 $: @ $) > $1 + $2 < @ $3 . > R<@> $+ + $* < @ $* . > $: < $(virtuser $1 @ $3 $@ $1 $: @ $) > $1 + $2 < @ $3 . > R<@> $+ < @ $+ . > $: < $(virtuser @ $2 $@ $1 $: @ $) > $1 < @ $2 . > R<@> $+ $: $1 R< error : $- $+ > $* $#error $@ $(dequote $1 $) $: $2 R< $+ > $+ < @ $+ > $: $>97 $1
* FEATURE(genericstable, btree /etc/useraliases.db)dnl # Generics table (mapping outgoing addresses) Kgenerics btree /etc/useraliases.db # handle generics database (RuleSet 93 ¾Æ·¡¿¡ À§Ä¡) R$+ < @ $=G . > $: < $1@$2 > $1 < @ $2 . > @ mark R$+ < @ *LOCAL* > $: < $1@$j > $1 < @ *LOCAL* > @ mark R< $+ > $+ < $* > @ $: < $(generics $1 $: $) > $2 < $3 > R< > $+ < @ $+ > $: < $(generics $1 $: $) > $1 < @ $2 > R< $* @ $* > $* < $* > $@ $>3 $1 @ $2 found qualified R< $+ > $* < $* > $: $>3 $1 @ *LOCAL* found unqualified R< > $* $: $1 not found
¸ÕÀú, ÇØ´ç È£½ºÆ®°¡ ¼ö½ÅÇÏ´Â µµ¸ÞÀÎÀ» Ŭ·¡½º w(sendmail.cw)¿¡ ³ª¿ÇÏ¿©¾ß ÇÑ´Ù.
* /etc/sendmail.cw ÆÄÀÏ nobreak.com kr.freebsd.org
domainaliases ÆÄÀÏÀ» ÆíÁý±â·Î ¿¾î ´ÙÀ½°ú °°ÀÌ Virtual User TableÀ» ÀÛ¼ºÇÑ´Ù.
* /etc/domainaliases ÆÄÀÏ webmaster@nobreak.com dipper moonhunt@nobreak.com moonhunt@ieee.org cjh@nobreak.com error:nouser Unknown User @nobreak.com nobreak @kr.freebsd.org %1@xfree86.org
¸ÞÀÏÁÖ¼Ò webmaster@nobreak.com ´Â ·ÎÄà »ç¿ëÀÚ dipper·Î ¸ÅÇεǰí, moonhunt@nobreak.com ·Î ¹è´ÞµÇ´Â ÆíÁö´Â moonhunt@ieee.org ·Î Æ÷¿öµù µÈ´Ù. cjh@nobreak.com À¸·Î ¹è´ÞµÇ´Â ÆíÁö¿¡ ´ëÇØ¼´Â ¿¡·¯¸Þ½ÃÁö 'Unknown User'·Î ´äÇϸç, ±×¿Ü nobreak.com À¸·Î ¼ö½ÅµÇ´Â ¸ðµç ÆíÁö´Â ·ÎÄà »ç¿ëÀÚ nobreak·Î Àü´ÞµÈ´Ù. ¶ÇÇÑ, kr.freebsd.org ·Î ¼ö½ÅµÇ´Â ¸ðµç ÆíÁö´Â xfree86.org ÀÇ °°Àº »ç¿ëÀÚ¿¡°Ô Æ÷¿öµùµÈ´Ù. ´ÙÀ½°ú °°ÀÌ aliases ÆÄÀϰú ¿¬µ¿ÇÏ¿© ´Ù¼öÀÇ »ç¿ëÀÚ¸¦ ¸ÅÇÎÇÏ´Â°Í ¶ÇÇÑ °¡´ÉÇÏ´Ù.
* /etc/domainaliases ÆÄÀÏ announce@kr.freebsd.org announce.ml admin@kr.freebsd.org admin.ml
* /etc/aliases ÆÄÀÏ announce.ml: :include:/var/ml/announce.ml admin.ml: nobreak, moonhunt@ieee.org
È£½ºÆ®¸íÀÌ kfug2.kr.freebsd.org À϶§, ½Ã½ºÅÛ¿¡¼ out-boundµÇ´Â ÆíÁö´Â ±âº»ÀûÀ¸·Î user@kfug2.kr.freebsd.org ¸¦ FromÀ¸·Î °®´Â´Ù. ´ÙÀ½ÀÇ Reverse-map Å×À̺íÀº ·ÎÄà »ç¿ëÀÚÀÇ ¸ÞÀÏÁÖ¼Ò¸¦ º¯°æÇÑ´Ù.
* /etc/useraliases ÆÄÀÏ nobreak nobreak@nobreak.com cjh cjh@kr.freebsd.org
ÀÛ¼ºµÈ Å×À̺íÀº makemapÀ» »ç¿ëÇØ dbm/btree/hash ÇüÅ·Πº¯È¯µÇ¾î¾ß ÇÑ´Ù. ¿©±â¼´Â btree¸¦ »ç¿ëÇÏ¿´À¸¹Ç·Î ´ÙÀ½°ú °°ÀÌÇÑ´Ù.
# makemap btree /etc/domainaliases.db < /etc/domainaliases # makemap btree /etc/useraliases.db < /etc/useraliases # ls /etc/domainaliases* /etc/useraliases* /etc/domainaliases /etc/useraliases /etc/domainaliases.db /etc/useraliases.db
ÀÌÁ¦ SendmailÀ» Çà¾÷ÇÏ°í µ¿ÀÛÀ» È®ÀÎÇÏÀÚ.
# kill -HUP `cat /var/run/sendmail.pid` # sendmail -bv webmaster@nobreak.com webmaster@nobreak.com... deliverable: mailer local, user dipper # sendmail -bv cjh@nobreak.com cjh@nobreak.com... Unknown User # sendmail -bv anybody@kr.freebsd.org anybody@kr.freebsd.org... deliverable: mailer esmtp, host xfree86.org., user anybody@xfree86.org