Ä¿ÇǴнº, ½Ã½ºÅÛ ¿£Áö´Ï¾îÀÇ ½°ÅÍ Ä¿ÇÇÇâÀÌ ³ª´Â *NIX
Ä¿ÇǴнº
½Ã½ºÅÛ/³×Æ®¿÷/º¸¾ÈÀ» ´Ù·ç´Â °÷
* HanIRCÀÇ #coffeenix ¹æ
[ Àåºñ ¹× ȸ¼± ÈÄ¿ø ]
HOME > ³×Æ®¿öÅ©(network) > ¸ÞÀÏ ¼­¹ö(mail) µµ¿ò¸»
°Ë»ö : »çÀÌÆ® WHOIS À¥¼­¹ö Á¾·ù

¸ÞÀÏ ÇÊÅ͸µ(½ºÆÔ¸ÞÀÏ) / procmail (14, ±Û 18, ÀÚ·á 8)

  procmail°ú perl·Î ¸ÞÀϼö½Å·Î±×¸¦ DB·Î (v2) ÀÛ¼ºÀÏ : 2004/09/10 15:53
 
  • ±Û¾´ÀÌ : ÁÁÀºÁøÈ£ ( http://coffeenix.net/ )
  • Á¶È¸¼ö : 8844
          [ ÀÌÀüÈ­¸é / ¼öÁ¤ ]   ºñ¹Ð¹øÈ£ :     Àμâ¿ë È­¸é
      Á¦  ¸ñ : procmail°ú perl·Î ¸ÞÀϼö½Å·Î±×¸¦ DB·Î. v2
    ÀÛ¼ºÀÚ : ÁÁÀºÁøÈ£(truefeel, http://coffeenix.net/ )
    ÀÛ¼ºÀÏ : 2004.1.15(¸ñ)
    ¼öÁ¤ÀÏ : 2004.1.18(ÀÏ) DB ½ºÅ°¸¶ ¼öÁ¤, mail_log.pl¿¡¼­ ÀÛÀºµû¿ÈÇ¥(')ó¸®
             http://coffeenix.net/board_view.php?bd_code=172
    ¾÷µ¥ÀÌÆ® : 2004.9.10(±Ý) ¸ÞÀÏ ÇÊÅ͸µ ¿©ºÎ üũ Çʵå Ãß°¡

    ¸ÞÀÏ ÄõÅÍ(ÆÄÀϽýºÅÛ ÄõÅͳª milterAPI¸¦ ÀÌ¿ëÇÏÁö ¾Ê°í ¼ø¼ö procmail+perl·Î¸¸À¸·Î
    ±¸ÇöÇÒ·Á´Â Áøº¸ÀûÀÎ(?) ÄõÅÍ)¸¦ À§ÇØ ¸¸µå´Â °úÁ¤¿¡¼­ ¼ö½Å Á¤º¸°¡ ÇÊ¿äÇß°í, ÀÌ
    ¼ö½ÅÁ¤º¸¸¦ DB·Î ³²°Üµµ ÁÁ°Ú´Ù´Â »ý°¢À» ÇϰԵǾú´Ù.
    Áï, ´Ü¼øÈ÷ °ç´Ù¸®·Î ³ª¿Â °ÍÀÌÁö¸¸ ¾µ¸¸ÇÏ´Ù ½Í¾î(?) Á¤¸®ÇÏ¿© ¼Ò°³ÇÑ´Ù.

    1. µé¾î°¡±â

    1) DB·Î ³²±â¸é ¹¹°¡ ÁÁÀº°¡?

      - Åë°è󸮰¡ ½±°Ô °¡´ÉÇÏ´Ù.
        ¿ù ¸îÅëÀÇ ¸ÞÀÏÀ» ¹Þ´Â ¼­¹öÀÎÁö COUNT(*)¸¸À¸·Î ½±°Ô È®ÀÎÇÒ ¼ö ÀÖ´Ù.
      - ¼ö½ÅÀÚº°·Î ¸ÞÀÏ ¼ö½Å ¸ÞÀÏ Åë¼ö Åë°è¸¦ º¼ ¼ö ÀÖ´Ù. (¼ö½ÅÀÚº° GROUP BY ·Î °¡´É)
      - ¸ÞÀÏ Á¦¸ñÀ» ÅëÇØ ÇÊÅ͸µÇÒ ½ºÆÔ ¸ÞÀÏ ¼³Á¤À» ½±°Ô µµ¿ÍÁØ´Ù.
      -  SUM(MAIL_SIZE)¸¦ ÀÌ¿ëÇÏ¸é ¿ùº° ¸ÞÀÏ ¼ö½Å¿ë·®(Çì´õ Á¦¿Ü)À» È®ÀÎÇÒ ¼ö ÀÖ´Ù.
      - ¸ÞÀÏ ÇÊÅ͸µ ¿©ºÎ¸¦ DB¿¡ ÀúÀåÇÏ¿© ÇÊÅ͸µ ºñÀ²À» È®ÀÎÇÒ ¼ö ÀÖ´Ù.

    2) ¾î¶² ·Î±×¸¦ ³²±â´Â°¡?

      - ¸ÞÀÏ ¼Û½ÅÀÚ ¸ÞÀÏÁÖ¼Ò¿Í À̸§
      - ¸ÞÀÏ ¼ö½ÅÀÚ ID
      - ¸ÞÀÏ Á¦¸ñ
      - º»¹® ±æÀÌ (´ÜÀ§ byte)
      - ¼Û½ÅÇÑ ÀϽà (Á¤È®È÷´Â DB¿¡ ·Î±×¸¦ ³²±ä ÀϽÃÀ̳ª ½Ã°£»óÀÇ Â÷ÀÌ´Â °ÅÀÇ ¾ø´Ù.)
      - ÇÊÅ͸µ ¿©ºÎ (°ªÀÌ 0À̸é ÇÊÅ͸µµÇÁö ¾ÊÀº ¸ÞÀÏÀÌ´Ù.)

    3) °úÁ¤À» ÀÌÇØÇغ¸ÀÚ.

      sendmail, qmail µî¿¡¼­ ¸ÞÀÏÀ» ¼ö½ÅÇϸé MDAÀÎ procmail·Î ³Ñ°ÜÁØ´Ù.
      -> /etc/procmailrc ¿¡¼­ ¸ÞÀÏ Á¦¸ñ µðÄÚµùÀ» ÇÑ´Ù.  (procmail¿¡¼­)
      -> ¼Û½ÅÀÚ, ¼ö½ÅÀÚ, Á¦¸ñ, ±æÀÌ µîÀ» ¾ò¾î³»¾î º¯¼ö¿¡ ÀúÀåÇÑ´Ù. (procmail¿¡¼­)
      -> ¾ò¾î³½ °ªÀ» mail_log.pl ·Î ³Ñ°ÜÁØ´Ù. (procmail¿¡¼­)
      -> DB·Î ÀúÀåÇÑ´Ù. (mail_log.pl¿¡¼­)
      -> ÇÊÅ͸µ ¿©ºÎ¸¦ üũÇÑ´Ù. (mail_filterchk.pl¿¡¼­)

    2. ¿ä±¸ »çÇ×

    1) DB´Â MySQLÀ» »ç¿ëÇÑ´Ù.
       ¿À¶óŬµµ »ó°ü¾ø´Ù. ±×°Ô ¹Ù·Î Perl DBI¸ðµâÀÇ ÀåÁ¡ÀÌ´Ù.

    2) Perl°ú Perl DBI, DBD ¸ðµâÀÌ ÇÊ¿äÇÏ´Ù.
       ÆÞÀÇ ÀúÀåâ°í¶ó ºÒ¸®´Â CPAN( http://www.cpan.org/modules/ )¿¡¼­
       DBI, DBD ¸ðµâÀ» ±¸ÇÒ ¼ö ÀÖ´Ù.
       Âü°í·Î ·¹µåÇÞ 9¿¡¼­´Â rpmÀ¸·Î Á¦°øµÈ´Ù.

       http://www.cpan.org/authors/id/T/TI/TIMB/DBI-1.43.tar.gz
       http://www.cpan.org/authors/id/J/JW/JWIED/DBD-mysql-2.1028.tar.gz

       ¸ÕÀú DBIÀ» ´ÙÀ½°ú °°Àº °úÁ¤À¸·Î ¼³Ä¡ÇÏ°í ¶È±ùÀÌ DBD-mysqlµµ ¼³Ä¡ÇÏ¸é µÈ´Ù.
       ±âÁ¸¿¡ ¼³Ä¡µÈ °ÍÀ» »ç¿ëÇßÀ¸¹Ç·Î, À§¿¡ ¸µÅ©ÇÑ ¼Ò½º·Î ÄÄÆÄÀÏÇßÀ» ¶§ ¹®Á¦°¡
       ¹ß»ýÇÏ´ÂÁö¿¡ ´ëÇؼ­´Â È®ÀÎÇØÁÙ ¼ö ¾ø´Ù.
        
     
       # perl Makefile.PL
       # make
       # make test
        (²À ÇÒ ÇÊ¿ä´Â ¾ø´Ù. Á¤»ó µ¿ÀÛÇÏ´Â °ÍÀÎÁö È®ÀÎÇϱâ À§ÇÑ ¿ëµµ.
         ¿¹Àü¿¡ ¼³Ä¡ÇßÀ» ¶§ ¸î °³ ¿À·ù°¡ ¹ß»ýÇ߾ ½ÇÁ¦ »ç¿ë¿¡´Â ¹®Á¦¾ø¾ú´Ù.)
       # make install
     


    3) ¸ÞÀÏ Á¦¸ñÀÇ ÇÑ±Û µðÄÚµùÀ» À§Çؼ­´Â hcode ÇÁ·Î±×·¥ÀÌ ÇÊ¿äÇÏ´Ù. (¿É¼Ç)
       ftp://ftp.kaist.ac.kr/pub/hangul/code/hcode/
       ftp://ftp.kreonet.re.kr/pub/hangul/cair-archive/code/hcode/
       ¿¡¼­ ±¸ÇÒ ¼ö ÀÖÀ¸¸ç, make ¸¸À¸·Î ÄÄÆÄÀÏÇÒ ¼ö ÀÖ´Ù.

    3. procmail ¼³Á¤

    [ /etc/procmailrc ¼³Á¤ Áß µðÄÚµù ºÎºÐ¸¸ ]
     
    # ¸ÞÀÏ Çì´õ µðÄÚµù
    :0 fhw
    *^(Subject|From|Cc):.*=\?EUC-KR\?(B|Q)\?
      |formail -c | /usr/bin/hcode -dk -m

    :0 Efhw
    *^(Subject|From|Cc):.*=\?ks_c_5601-1987\?(B|Q)\?
      |formail -c | /usr/bin/hcode -dk -m

    :0 Efhw
    *^(Subject|From|Cc):.*=\?KSC5601\?(B|Q)\?
      |formail -c | /usr/bin/hcode -dk -m

    :0 Efhw
    *^(Subject|From|Cc):.*=\?ISO-8859-1\?(b|B|Q)\?
      |formail -c | /usr/bin/hcode -dk -m

    # ¸ÞÀÏ ¼ö½Å·Î±×¸¦ DB·Î ÀúÀå
    INCLUDERC=/etc/procmail/mail_log.rc

    # À̺κп¡ ÇÊÅ͸µ ³»¿ëÀ» ³ª¿­ÇÑ´Ù.
    #
    # ¿¹)
    #
    # SPAM_LOG=/var/log/SPAM.log
    # :0 :
    # * ^Subject:.*(¹«·á.*(±³Àç|»ùÇÃ|ÁõÁ¤|È«»ï)|»ùÇÃ.*¹«·á.*(¹è¼Û|¹èÆ÷|Á¦°ø)|ÀÚ¼±Àü¾È³»|±âÀû.*¿µ¹®¹ý|¸íÇ°.*(ÃÖÀú
    # * *°¡|½Ã°è))
    # $SPAM_LOG

    # ÇÊÅ͸µ ¿©ºÎ¸¦ üũÇÑ´Ù. (ÇÊÅ͸µÀÌ ¾ÈµÈ ¸ÞÀϸ¸ mail_filterchk.rc°¡ ½ÇÇàµÈ´Ù.)
    INCLUDERC=/etc/procmail/mail_filterchk.rc
     


    : ´Â ó¸®ÇÒ Á¶°ÇÀÇ ½ÃÀÛÀ» ÀǹÌÇϸç recipes¶ó ºÒ¸°´Ù.
    À§¿¡¼­ Çì´õ¿¡¼­ °¢°¢ÀÇ Á¶°ÇÀ» ã¾Æ ¸ÂÁö ¾ÊÀ¸¸é ´ÙÀ½ Á¶°Ç(E = else if·Î ÀÌÇØÇÏ¸é µÊ)À»
    ó¸®ÇÏ´Â ÇüÅ·ΠµÇ¾î ÀÖ´Ù.
    ÀÌ·± °úÁ¤À» °ÅÃÄ Base64³ª QP·Î ÀÎÄÚµùµÈ ¸ÞÀÏ Çì´õ¸¦ µðÄÚµùÇÏ°Ô µÈ´Ù.

    ÀÌÁ¦ includeµÈ mail_log.rc°ú mail_filterchk.rc ¸¦ »ìÆ캸ÀÚ.

    [ /etc/procmail/mail_log.rc ]
     
    # ¼Û½ÅÀÚ ¸ÞÀÏÁÖ¼Ò
    :0
    * ^From: \/.*
    {
            FROM = "$MATCH"
    }
    # ¼ö½ÅÀÚ ¸ÞÀÏÁÖ¼Ò
    :0
    * ^To: \/.*
    {
            TO = "$MATCH"
    }
    # ¸ÞÀÏÁ¦¸ñ
    :0
    * ^Subject: \/.*
    {
            SUBJECT = "$MATCH"
    }

    # ¸ÞÀÏ º»¹® byte¼ö
    :0
    * 1^1 B ?? > 1
    { }

    LENGTH = $=

    RESULT=`/etc/procmail/mail_log.pl "$FROM" "TO" $LOGNAME "$SUBJECT" $LENGTH`
     

    * ´Ù¿î·Îµå : http://coffeenix.net/truefeel/files/mail_log_v2/mail_log.rc

    °¢°¢ÀÇ Á¶°Ç¿¡ ÀÇÇØ ¼ö½ÅÀÚ, ¼Û½ÅÀÚ, ¸ÞÀÏÁ¦¸ñ, º»¹® ±æÀ̸¦ ¾ò¾î³½´Ù.
    ±× ¾ò¾îÁø °ªÀº º¯¼ö¿¡ ÀúÀåµÇ¾î mail_log.pl ÇÁ·Î±×·¥¿¡ Àμö·Î ³Ñ°ÜÁÖ°Ô µÈ´Ù.

    ¾î¶»°Ô ¸ÅĪÀÌ µÇ¾î FROM, TO, SUBJECT, LENGTH º¯¼ö¿¡ °ªÀÌ µé¾î°¡´ÂÁö ±Ã±ÝÇϸé
    procmailrc ¿¡ VERBOSE=yes ·Î ÇÏ¸é ½±°Ô È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

     
    LOGFILE=/var/log/procmail
    VERBOSE=yes
     


    [ /etc/procmail/mail_log.rc ]
     
    # ¸ÞÀÏ ÇÊÅ͸µ ¿©ºÎ üũ
    #
    # ¸ÞÀÏ ÇÊÅ͸µÀÌ µÇÁö ¾ÊÀº °æ¿ì´Â DB¿¡¼­ ÇÊÅ͸µ À¯¹« üũ¿ë Çʵ带 0 À¸·Î
    # updateÇÕ´Ï´Ù.
    # ÀÌ ÆÄÀÏÀº /etc/procmailrc ÀÇ Á¦ÀÏ ¸¶Áö¸·¿¡ INCLUDEÇØ¾ß ÇÕ´Ï´Ù.
    RESULT2=`/etc/procmail/mail_filterchk.pl "$RESULT"`
     

    * ´Ù¿î·Îµå : http://coffeenix.net/truefeel/files/mail_log_v2/mail_filterchk.rc

    4. DB ½ºÅ°¸¶

    MAIL_LOG DB ½ºÅ°¸¶ÀÌ´Ù.
     
    /* ¸ÞÀÏ ¼ö½Å ·Î±× */
    CREATE TABLE MAIL_LOG (
      MAIL_SEQ              int unsigned not null auto_increment,    /* ·Î±× SEQ.  */
      MAIL_FROM             varchar(255),                   /* ¼Û½ÅÀÚ(From) */
      MAIL_FROMNAME         varchar(255),                   /* ¼Û½ÅÀÚ À̸§ */
      MAIL_FROMMAIL         varchar(255),                   /* ¼Û½ÅÀÚ ¸ÞÀÏÁÖ¼Ò */
      MAIL_TO               varchar(255),                   /* ¼ö½ÅÀÚ(To)  */
      MAIL_LOGNAME          varchar(255),                   /* ¼ö½Å ID   */
      MAIL_SUBJ             varchar(255),                   /* Á¦¸ñ      */
      MAIL_SIZE             int unsigned default 0,         /* ¸ÞÀÏ Å©±â */
      MAIL_FILTERCHK        int unsigned default 0,         /* ÇÊÅ͸µ À¯¹« (0=ÇÊÅ͸µ ¾ÈµÊ) */
      MAIL_DATE             datetime,                       /* ¸ÞÀÏ ³¯Â¥ */
      PRIMARY KEY (MAIL_SEQ),
      INDEX key_filterchk(MAIL_FILTERCHK)
    );
     

    * ´Ù¿î·Îµå http://coffeenix.net/truefeel/files/mail_log_v2/mail_log.sql

    5. ·Î±ë ¹× ÇÊÅ͸µ ¿©ºÎ üũ ÇÁ·Î±×·¥

    ´ÙÀ½Àº ·Î±×¸¦ DB¿¡ ÀúÀåÇÏ´Â ÆÞ ¼Ò½ºÀÌ´Ù.

    [ /etc/procmail/db_lib.pl ]
     
    #!/usr/bin/perl
    #
    # DB ÇÔ¼ö
    #
    # Made By ÁÁÀºÁøÈ£(truefeel, http://coffeenix.net/ )

    use DBI;

    # DB ¿¬°á
    sub db_connect {
    ¡¡¡¡¡¡$szDBName  = "DBÁöÁ¤";
    ¡¡¡¡¡¡$szDBUser  = "DB USER ID";
    ¡¡¡¡¡¡$szDBPasswd= "DB ºñ¹Ð¹øÈ£";

    ¡¡¡¡¡¡$dbh = DBI->connect ( "DBI:mysql:$szDBName", $szDBUser, $szDBPasswd)
    || die "$DBI::errstr";
    }

    # DB Á¢¼ÓÀ» ²÷À½
    sub db_disconnect {
    ¡¡¡¡¡¡$dbh->disconnect();
    }

    # SQL¹® ½ÇÇà
    sub db_do_sql {
    ¡¡¡¡¡¡my ( $szSQL ) = @_;
    ¡¡¡¡¡¡my ( $sth );

    ¡¡¡¡¡¡$sth = $dbh->prepare($szSQL);

    ¡¡¡¡¡¡# ¿À·ù°¡ ¹ß»ýÇß´ÂÁö °Ë»ç --------
    ¡¡¡¡¡¡if ( $@ ) {
    ¡¡¡¡¡¡     &db_disconnect;
    ¡¡¡¡¡¡     print " ¿À·ù ¹ß»ý : $@\n";
    ¡¡¡¡¡¡} else {
    ¡¡¡¡¡¡     $sth->execute;
    ¡¡¡¡¡¡}
    ¡¡¡¡¡¡$sth->finish();
    }

    $temp="1";
     


    [ /etc/procmail/mail_log.pl ]
     
    #!/usr/bin/perl
    #
    # procmailÀ» ÅëÇØ ³Ñ°Ü¿Â ¸ÞÀÏ ¼ö½Å Á¤º¸¸¦ DB·Î.
    #
    # Made By ÁÁÀºÁøÈ£(truefeel, http://coffeenix.net/ )
    #
    # 2004.1.13(È­)
    # 2004.9.10(±Ý) ÇÊÅ͸µ ¿©ºÎ üũ¿ë Çʵå Ãß°¡
    #
    # - Perl DBI, DBD ¸ðµâ ÇÊ¿ä
    # - DB : MySQL
    # - ³Ñ°Ü¿À´Â °ª : ¼ø¼­´ë·Î From, To, ¼ö½ÅID, ¸ÞÀÏÁ¦¸ñ, º»¹®Å©±â(byte)

    require '/etc/procmail/db_lib.pl';

    # $DEBUG = 1;
    # Á¤º¸¸¦ ³Ñ°Ü ¹ÞÀ½
    if ( $#ARGV < 4 ) {
    ¡¡¡¡¡¡print "½ÇÇà¹æ¹ýÀÌ Æ²·È½À´Ï´Ù. procmailÀ» ÅëÇؼ­ ½ÇÇàÇϼ¼¿ä.\n";
    ¡¡¡¡¡¡exit 1;
    }
    ($FROM, $TO, $LOGNAME, $SUBJECT, $SIZE ) = @ARGV;

    # DBÀúÀåÀ» À§ÇÑ ÀÛÀº µû¿ÈÇ¥ ó¸®
    $FROM    =~ s/'/''/g;
    $TO      =~ s/'/''/g;
    $SUBJECT =~ s/'/''/g;

    # From: ¿¡¼­ À̸§°ú ¸ÞÀÏÁÖ¼Ò¸¦ ºÐ¸®
    # ¿¹ 1) $FROM = '"truefeel"<true____@coffee___.___>';
    # ¿¹ 2) $FROM = 'true____@coffee___.___';
    # ¿¹ 3) $FROM = '<true____@coffee___.___>';
    if ( $FROM =~ /"{0,}([^"|.]*)"{0,}\s{0,}<(.*)>/g ) {
    ¡¡¡¡¡¡$FROMNAME = $1;
    ¡¡¡¡¡¡$FROMMAIL = $2;
    } else {
    ¡¡¡¡¡¡$FROMMAIL = $FROM;
    }

    # ÇÊÅ͸µ ¿©ºÎ üũ¸¦ À§ÇÑ UniqÇÑ Å°(9ÀÚ¸®) ¸¸µé±â
    srand();
    $FILTERCHK = sprintf("%09d", int(rand(999999999)) );

    # -------------------------------------------------
    # DB ó¸®
    # -------------------------------------------------
    # DB Á¢¼Ó
    &db_connect;

    # ·Î±× ÀúÀå
    $szSQLMailLog = qq {
    ¡¡¡¡¡¡INSERT INTO MAIL_LOG
    ¡¡¡¡¡¡VALUES ('', '$FROM', '$FROMNAME', '$FROMMAIL', '$TO', '$LOGNAME', '$SUBJECT', '$SIZE', '$FILTERCHK', now() ) };
    &db_do_sql($szSQLMailLog);
    &db_disconnect;

    # µð¹ö±ë
    if ( defined($DEBUG) ) {
    ¡¡¡¡¡¡$szMailLog = sprintf("¼Û½Å= %s\n¼ö½Å= %s, %s\nÁ¦¸ñ= %s\nÅ©±â= %dBytes\n", $FROM, $TO, $LOGNAME, $SUBJECT, $SIZE);
    ¡¡¡¡¡¡open(FILE, ">/tmp/maillog.debug");
    ¡¡¡¡¡¡¡¡¡¡¡¡print FILE $szMailLog;
    ¡¡¡¡¡¡¡¡¡¡¡¡print FILE "$szSQLMailLog \n";
    ¡¡¡¡¡¡close(FILE);
    }

    print $FILTERCHK;¡¡¡¡¡¡¡¡¡¡¡¡# Å°°ªÀ» procmail ·Î ³Ñ±è
    exit;
     

    * Syntax HighlightµÈ ¼Ò½º º¸±â :
      http://coffeenix.net/truefeel/files/mail_log_v2/mail_log.pl.html
      http://coffeenix.net/truefeel/files/mail_log_v2/db_lib.pl.html
    * ´Ù¿î·Îµå
      http://coffeenix.net/truefeel/files/mail_log_v2/mail_log.pl.txt
      http://coffeenix.net/truefeel/files/mail_log_v2/db_lib.pl.txt

    °£´ÜÈ÷ »ìÆ캸ÀÚ.

    ³Ñ°Ü¿Â ÀμöÁß¿¡¼­ ¼Û½ÅÀÚ Á¤º¸´Â À̸§°ú ¸ÞÀÏÁÖ¼Ò·Î ³ª´«´Ù. ¹°·Ð À̸§ÀÌ ¾ø¾îµµ ¹®Á¦¾øÀÌ
    ó¸®ÇÑ´Ù. ±×¸®°í DB¿¡ ÀúÀåÇÏ°í Á¾·áÇÑ´Ù.
    $DEBUG = 1 À¸·Î ÁöÁ¤ÇÏ¸é µð¹ö±ë¿¡ À¯¿ëÇÏ´Ù. ³Ñ°Ü¹ÞÀº Àμö¸¦ /tmp/maillog.debug¿¡ ÀúÀå ÇÑ´Ù.

    db_connect() ÇÔ¼ö¿¡¼­ $szDBName, $szDBUser, $szDBPasswdÀ» ¼³Á¤ÇØÁÖ¾î¾ß ÇÑ´Ù.
    ¸¸¾à Oracle DBÀ̶ó¸é 'DBI:mysql' ´ë½Å 'DBI:Oracle'À» ½áÁÖ¸é µÈ´Ù.

    ÁÖÀÇÇÒ °ÍÀº DB ºñ¹Ð¹øÈ£µµ ÀÖÀ¸´Ï ÆÄÀÏ Æ۹̼ÇÀ» 700(rwx------)À¸·Î ÇؾßÇÑ´Ù.

     
    # chmod 700 /etc/procmail/db_lib.pl
     


    [ /etc/procmail/mail_log.pl ]
     
    #!/usr/bin/perl
    #
    # procmailÀ» ÅëÇØ ³Ñ¾î¿Â Å°·Î ÇÊÅ͸µ ¿©ºÎ¸¦ DB¿¡ Ç¥½Ã
    #
    # Made By ÁÁÀºÁøÈ£(truefeel, http://coffeenix.net/ )
    #
    # 2004.9.10(±Ý)
    #
    # - Perl DBI, DBD ¸ðµâ ÇÊ¿ä
    # - DB : MySQL
    # - ÇÊÅ͸µ ¾ÈµÈ °ÍÀº MAIL_FILTERCHK Çʵ带 0 À¸·Î ÇÔ

    require '/etc/procmail/db_lib.pl';

    # $DEBUG = 1;
    # Á¤º¸¸¦ ³Ñ°Ü ¹ÞÀ½
    if ( $#ARGV < 0 ) {
    ¡¡¡¡¡¡print "½ÇÇà¹æ¹ýÀÌ Æ²·È½À´Ï´Ù. procmailÀ» ÅëÇؼ­ ½ÇÇàÇϼ¼¿ä.\n";
    ¡¡¡¡¡¡exit 1;
    }
    ($FILTERCHK ) = @ARGV;

    # -------------------------------------------------
    # DB ó¸®
    # -------------------------------------------------
    # DB Á¢¼Ó
    &db_connect;

    # ·Î±× ÀúÀå
    $szSQLMailLog = qq {
    ¡¡¡¡¡¡UPDATE MAIL_LOG SET MAIL_FILTERCHK = 0 WHERE MAIL_FILTERCHK = '$FILTERCHK' };
    &db_do_sql($szSQLMailLog);
    &db_disconnect;

    # µð¹ö±ë
    if ( defined($DEBUG) ) {
    ¡¡¡¡¡¡$szMailLog = sprintf("¼Û½Å= %s\n¼ö½Å= %s, %s\nÁ¦¸ñ= %s\nÅ©±â= %dBytes\n", $FROM, $TO, $LOGNAME, $SUBJECT, $SIZE);
    ¡¡¡¡¡¡open(FILE, ">/tmp/maillog.debug");
    ¡¡¡¡¡¡¡¡¡¡¡¡print FILE $szMailLog;
    ¡¡¡¡¡¡¡¡¡¡¡¡print FILE "$szSQLMailLog \n";
    ¡¡¡¡¡¡close(FILE);
    }

    exit;
     

    * Syntax HighlightµÈ ¼Ò½º º¸±â :
      http://coffeenix.net/truefeel/files/mail_log_v2/mail_filterchk.pl.html
    * ´Ù¿î·Îµå
      http://coffeenix.net/truefeel/files/mail_log_v2/mail_filterchk.pl.txt

    ¼ö½Å ¸ÞÀÏ¿¡ ´ëÇÑ À¯ÀÏÇÑ Å°°ª($FILTERCHK)À» ³Ñ°Ü¹Þ¾Æ¼­ ÇÊÅ͸µ µÇÁö ¾ÊÀº ¸ÞÀÏÀÓÀ»
    Ç¥½ÃÇÑ´Ù. (UPDATE¹®, MAIL_FILTERCHK = 0)

    ·Î±×°¡ Á¦´ë·Î ³²¾Ò´ÂÁö È®ÀÎÇغ¸ÀÚ.


    ·Î±×¸¦ DB·Î ³²°åÀ» ¶§ ¾î¶»°Ô È°¿ëÇÒ °ÍÀÎÁö »ý°¢Çߴ°¡?
    ±×·³ Áö±Ý ´çÀå ½ÃÀÛÇضó!

    6. Âü°í ÀÚ·á

    * Procmail Tips
      http://pm-doc.sourceforge.net/pm-tips.html
    * procmail¿¡ °üÇÏ¿© (±Û ÀÌ»ó·Î)
      http://trade.chonbuk.ac.kr/~leesl/procmail/index.html
    * Short guide to DBI (The Perl Database Interface Module)
      http://www.perl.com/pub/a/1999/10/DBI.html
      Ä¿ÇǴнº Ä«Æä ÃÖ±Ù ±Û
    [03/24] Youtube òÁ&#2
    [03/20] Re: ¿Â¶óÀΰÔÀÓÀÇ Á¾ÁÖ±¹ ´ëÇѹα¹
    [03/20] ½ÇÁ¦&#4
    [03/18] ±¹°¡&#5
    [10/20] Cross Compiler ±ò
    [07/14] SSL ¬¡¬°
    [04/26] Re: µµ½ºÈ­¸é ¿ø°ÝÁ¶Á¾ ¿©ºÎ
    [04/25] µµ½ºÈ­¸é ¿ø°ÝÁ¶Á¾ ¿©ºÎ
    [10/30] Cshell¿¡¼­ ³­¼ö ¼³Á¤
    [10/23] °øÇ×öµµÁÖ½Äȸ»ç SE ±¸ÀÎ Ëì
    [01/26] Re: wgetÀ¸·Î ´Ù¸¥¼­¹ö¿¡ÀÖ´Â µð·ºÅ丮¸¦ °¡Á®¿À·Á°íÇÕ´Ï´Ù.
    [01/25] wgetÀ¸·Î ´Ù¸¥¼­¹ö¿¡ÀÖ´Â µð·ºÅ丮¸¦ °¡Á®¿À·Á°íÇÕ´Ï´Ù.
    [01/11] ƯÁ¤ ¾Èµå·ÎÀ̵å WebView ¹öÀü¿¡¼­ SSL ¹®Á¦ (WebView ¹ö±×)
    [08/01] DNS forwarder (Àü´ÞÀÚ) ¼­¹ö¸¦ ÅëÇؼ­ Äõ¸®ÇÏ¸é ¿ª¹æÇâÀ» ¹Þ¾Æ¿ÀÁú ¸øÇÕ´Ï´Ù.
    [05/16] (ÁÖ)ÈÄÀÌÁî ½Ã½ºÅÛ¿£Áö´Ï¾î (°æ·ÂÀÚ) ¸ðÁý
      New!   ÃÖ±Ù¿¡ µî·ÏÇÑ ÆäÀÌÁö
      KiCad EDA Suite project (Free/Libre/Open-Source EDA Suite) (CAD)
      ¿ÀÇÂij½ºÄÉÀ̵å ijµå (OpenCASCADE CAD)
      QCad for Windows --- GNU GPL (Free Software)
      The Hello World Collection
      IPMI¸¦ È°¿ëÇÑ ¸®´ª½º ¼­¹ö°ü¸®
      DNS ¼³Á¤ °Ë»ç
      nagiosgraph ¼³Ä¡ ¹æ¹ý
      Slony-I ¼³Ä¡ ¹æ¹ý (postgresql replication tool)
      Qmail±â¹ÝÀÇ Anti spam ½Ã½ºÅÛ ±¸ÃàÇϱâ
      clusterssh

    [ ÇÔ²²ÇÏ´Â »çÀÌÆ® ]




    ¿î¿µÁø : ÁÁÀºÁøÈ£(truefeel), ¾ß¼ö(yasu), ¹ü³ÃÀÌ, sCag
    2003³â 8¿ù 4ÀÏ~