[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]