[PREVIOUS CHAPTER] [NEXT CHAPTER]
3 POP before SMTP with Postfix

postfix $B$G$N(B pop before smtp $B$K$D$$$F(B

3.1	install postfix

3.2	install DRAC (Dynamic Relay Authorization Control)

http://mail.cc.umanitoba.ca/drac/index.html 

[drac $B$N$D$/$j$+$?(B]
$B!&(BINSTALL$B$rFI$s$G!"(BOS$B$K$"$o$;$F(BMakefile$B$rD>$9!#(B
  $BCm0U(B: -DREQ_HASH $B$rK:$l$:$K(B

   INSTALL = install
   EBIN = /usr/local/sbin
   MAN = /usr/local/man/man
   DEFS = -DSOCK_RPC -DFCNTL_LOCK -DGETHOST -DDASH_C -DREQ_HASH
   CC = cc
   RANLIB = ranlib
   CFLAGS = $(DEFS) -g -I/usr/include
   LDLIBS = 
   TSTLIBS = -L. -ldrac
   RPCGENFLAGS = -C
   MANLIB = 3
   MANADM = 8

3.3	qpopper$B$N2~B$(B

$B!&(BINSTALL$B$NCf$K$"$k(B pop_pass.c $B$X$N%Q%C%A$r$"$F$k!#(B
  $BI,MW$J$il=j$K$*$/(B
  Makefile$B$r$=$l$K$"$o$;$F=$@5!#(B

*** pop_pass.c-nodrac	Sat Jun 27 10:56:00 1998
--- pop_pass.c	Wed Jul 22 22:54:04 1998
***************
*** 19,24 ****
--- 19,28 ----

  #include <pwd.h>
  #include "popper.h"
+ #ifdef DRAC_AUTH
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+ #endif /* DRAC_AUTH */


  /* This error message is vague on purpose to help reduce help improve
***************
*** 502,507 ****
--- 506,519 ----

      /*  Initialize the last-message-accessed number */
      p->last_msg = 0;
+ 
+ #ifdef DRAC_AUTH
+     {
+ 	char *err;
+ 	if (dracauth("localhost", inet_addr(p->ipaddr), &err) != 0)
+ 	  pop_log(p,POP_PRIORITY,err);
+     }
+ #endif /* DRAC_AUTH */

      /*  Authorization completed successfully */
      return (pop_msg (p,POP_SUCCESS,


3. modify postfix /etc/postfix/main.cf.

        smtpd_recipient_restrictions =
            permit_mynetworks
            check_client_access hash:/etc/mail/dracd
            check_relay_domains
            reject

4. mkdir /etc/mail. 

dracd users the directory "/etc/mail".

5. run "rpc.dracd" as a daemon.

[²òÀâ]

$B2~B$$N7k2L(B popper $B$O(BPOP$B$NG'>Z$K@.8y$7$?D>8e$K(B dracd $B$X(BRPC(Remote
Procedure Call)$B$G$=$N%G!<%?$rEO$9$h$&$K$J$k!#(Bdracd$B$O$=$l$r$&$1$F(B 
/etc/mail/dracd.db $B$H$$$&%U%!%$%k$K(B

   IP$B%"%I%l%9(B   $B2?;~$^$G$3$N%"%I%l%9$+$i$N(BSMTP$B$,M-8z$+!)(B(unix time)

$B$N%O%C%7%e%F!<%V%k$r:n$k!#%G%U%)!<%k%H$G$O(B30$BJ,4VM-8z!#(B

RPC$B$r;H$&$?$a(Bdracd$B$OF1$8%[%9%H>e$GF0$$$F$$$J$/$F$b9=$o$J$$!#$D$^$j(B pop 
$B%5!<%P$H(B MTA$B$OF1$8%[%9%H$G$"$kI,MW$,$J$$!#$3$3$,4N$J$o$1$@$1$I!"5U$K(B
RPC$B4X78$N@_Dj$r4V0c$($k$H(BRPC$B$^$o$j$,@$3&$K"~8+$($H$$$&%5!<%P$,=PMh>e$,(B
$B$k$H$b$$$($F5$$r$D$1$J$$$H$$$1$J$$!#(B

postfix$B$N(B check_client_access maptype:mapname $B$O(B

   Search the named access database for the client hostname, parent
   domains, client IP address, or networks obtained by stripping least
   significant octets. Reject the request if the result is REJECT or
   "[45]XX text".  Permit the request if the result is OK or RELAY or
   all-numerical. Otherwise, treat the result as another list of UCE
   restrictions. The access_map_reject_code parameter specifies the
   response code for REJECT results (default: 554).

$B$N$h$&$K$J$C$F$$$k$?$a!"%O%C%7%e%F!<%V%k$NCM$,?t;z$@$1$J$i(BOK$B$H$J$k!#(B


[PREVIOUS CHAPTER] [NEXT CHAPTER]