'sendmail'에 해당되는 글 7건

  1. 2009.10.20 Dstat: Versatile resource statistics tool
  2. 2009.06.17 메일서버(sendmail,saslauthd,dovecot) 구축
  3. 2009.05.18 메일로 들어오는 바이러스 차단 AntiVir Milter 설치 및 운영
2009. 10. 20. 14:29

Dstat: Versatile resource statistics tool

[dag@moria ~]$ dstat --help
Usage: dstat [-afv] [options..] [delay [count]]
Versatile tool for generating system resource statistics

Dstat options:
  -c, --cpu              enable cpu stats
     -C 0,3,total           include cpu0, cpu3 and total
  -d, --disk             enable disk stats
     -D total,hda           include hda and total
  -g, --page             enable page stats
  -i, --int              enable interrupt stats
     -I 5,eth2              include int5 and interrupt used by eth2
  -l, --load             enable load stats
  -m, --mem              enable memory stats
  -n, --net              enable network stats
     -N eth1,total          include eth1 and total
  -p, --proc             enable process stats
  -r, --io               enable io stats (I/O requests completed)
  -s, --swap             enable swap stats
     -S swap1,total         include swap1 and total
  -t, --time             enable time/date output
  -T, --epoch            enable time counter (seconds since epoch)
  -y, --sys              enable system stats

  --aio                  enable aio stats
  --fs, --filesystem     enable fs stats
  --ipc                  enable ipc stats
  --lock                 enable lock stats
  --raw                  enable raw stats
  --socket               enable socket stats
  --tcp                  enable tcp stats
  --udp                  enable udp stats
  --unix                 enable unix stats
  --vm                   enable vm stats

  --plugin-name          enable plugins by plugin name (see manual)
  --list                 list all available plugins

  -a, --all              equals -cdngy (default)
  -f, --full             automatically expand -C, -D, -I, -N and -S lists
  -v, --vmstat           equals -pmgdsc -D total

  --float                force float values on screen
  --integer              force integer values on screen

  --bw, --blackonwhite   change colors for white background terminal
  --nocolor              disable colors (implies --noupdate)
  --noheaders            disable repetitive headers
  --noupdate             disable intermediate updates
  --output file          write CSV output to file

delay is the delay in seconds between each update (default: 1)
count is the number of updates to display before exiting (default: unlimited)
Only in black and white :)
[dag@moria ~]# dstat
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw 
  5   0  93   0   0   0| 154k   84k|   0     0 |   0     0 |1081  1116 
 13   0  87   0   0   0|   0     0 |   0     0 |   0     0 |1036   696 
  8   0  92   0   1   0|   0  8192B|   0     0 |   0     0 |1073   936 
  0   0  99   0   0   1|   0     0 |   0     0 |   0     0 |1072   940 
  1   1  97   0   2   0|   0     0 |   0     0 |   0     0 |1252  1727 
  1   1  98   0   1   0|   0     0 |   0     0 |   0     0 |1126  1191 
  1   0  99   0   0   0|   0     0 |   0     0 |   0     0 |1045   908 
  0   0  99   0   0   0|   0    44k|   0     0 |   0     0 |1051   904 
  1   1  99   0   0   0|   0     0 |   0     0 |   0     0 |1036   850 
  1   0 100   0   0   0|   0     0 |   0     0 |   0     0 |1029   757 
[dag@moria ~]$ dstat -c --top-cpu -d --top-bio --top-latency
----total-cpu-usage---- -most-expensive- -dsk/total- ----most-expensive---- --highest-total--
usr sys idl wai hiq siq|  cpu process   | read  writ|  block i/o process   | latency process 
  5   0  94   0   0   0|firefox      3.6| 148k   81k|init [5]     98k   50B|pdflush        21
  2   1  98   0   0   0|wnck-applet  0.5|   0     0 |                      |at-spi-regist   5
  2   1  98   0   0   0|firefox      0.5|   0     0 |                      |Xorg            1
  1   2  97   0   0   1|                |   0     0 |                      |Xorg            1
  1   1  98   0   0   0|                |   0     0 |                      |ksoftirqd/1    10
  1   1  97   0   0   0|firefox      0.5|   0     0 |                      |ksoftirqd/0     5
  2   1  97   0   0   0|firefox      0.5|   0     0 |firefox       0    28k|ksoftirqd/0     5
  2   1  97   0   0   0|firefox      0.5|   0     0 |                      |Xorg            1
  1   1  97   0   0   0|firefox      0.5|   0     0 |                      |ksoftirqd/0     6
  2   1  98   0   0   0|firefox      0.5|   0     0 |                      |ksoftirqd/0     6
  1   2  98   0   0   0|                |   0     0 |                      |ksoftirqd/1     8
  2   1  98   0   0   0|iwlagn       0.5|   0    72k|kjournald     0    32k|ksoftirqd/1    12
  1   1  97   0   0   0|                |   0     0 |                      |iwlagn/0        1
  1   1  98   0   0   0|firefox      0.5|   0     0 |                      |ksoftirqd/1     8
Here are 2 screenshots of older dstat versions in action. 

Dstat 0.4 on a Power5 system that is being stress tested.

Dsta 0.3 (first release) on 5 RHEL3 nodes in a cluster from a Windows terminal.

If you've found a bug, please check the TODO file for known problems and send me updates if you have more information to provide. 

Please also copy&paste the output of the problem, with a description, the version of the kernel and if appropriate the involved /proc entries. 

Dstat has a --debug option to profile plugins and show what plugins and /proc entries are affected. Dstat also shows some more information with the --version option that might be useful. The following packages (in order of appearance) are available. or grab the latest 0.7.2 tarball at: http://dag.wieers.com/home-made/dstat/dstat-0.7.2.tar.bz2

출처 : http://dag.wieers.com/

Trackback 1 Comment 0
2009. 6. 17. 14:35

메일서버(sendmail,saslauthd,dovecot) 구축

// 설치 //

1. yum install sendmail (centos5 설치시 기본설치되어있음)
2. yum install sendmail-cf ( m4 사용, sasl 설정을 위해 깔아야 함)
3. cyrus-sasl 패키지의 설치 확인. 안되어 있으면 설치
4. yum install dovecot ( pop3 서버 설치)

// 소스 설치 //

# wget http://dovecot.org/releases/1.1/dovecot-1.1.2.tar.gz
# tar xvfz dovecot-1.1.2.tar.gz
# cd dovecot-1.1.2
# ./configure --prefix=/usr --localstatedir=/var --with-pam --with-gssapi --with-mysql
# make
# make install
# cp /usr/etc/dovecot-example.conf /usr/etc/dovecot.conf
# groupadd -g 97 dovecot
# useradd -u 97 -g 97 -d /usr/libexec/dovecot -s /sbin/nologin dovecot
# vi /usr/etc/dovecot.conf
protocols = imap pop3
disable_plaintext_auth = no
ssl_disable = yes
protocol imap {
protocol pop3 {
auth default {
mechanisms = plain
passdb passwd {
passdb shadow {
userdb passwd {
user = root
plugin {
mail_privileged_group = mail

// 실행 스크립트 //

# vi /etc/rc.d/init.d/dovecot
#   /etc/rc.d/init.d/dovecot
# Starts the dovecot daemon
# chkconfig: - 65 35
# description: Dovecot Imap Server
# processname: dovecot
# Source function library.
. /etc/init.d/functions

test -x /usr/sbin/dovecot || exit 0

prog="Dovecot Imap"

start() {
        echo -n $"Starting $prog: "
    daemon /usr/sbin/dovecot
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/dovecot

stop() {
    echo -n $"Stopping $prog: "
    killproc /usr/sbin/dovecot
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/dovecot

#   See how we were called.
case "$1" in
    if [ -f /var/lock/subsys/dovecot ]; then
    status /usr/sbin/dovecot
    echo $"Usage: $0 {condrestart|start|stop|restart|reload|status}"
    exit 1

exit $RETVAL
# chmod 700 /etc/rc.d/init.d/dovecot
# chkconfig --add dovecot
# chkconfig --level 345 dovecot on
# /etc/init.d/dovecot start|stop|restart

// sendmail 설정 //

1. vi /etc/mail/sendmail.cf
   -> #Cwlocalhost (주석처리)
   -> DaemonPortOption=port=stmp,Name=MTA
2. vi /etc/mail/local-host-names
   -> localhost
   -> example.com.kr
   -> example.comm 등 메일서버의 도메인명 기록
3. vi /etc/mail/access
   -> localhost.localdomain RELAY
   -> localhost   RELAY
   -> example.co.kr  RELAY
   -> mail.example.co.kr  RELAY
   -> example.com  RELAY
   -> mail.example.com  RELAY
   ... 등 메일서버 이용을 허용하는 도메인 또는 IP주소
4. makemap hash /etc/mail/access < /etc/mail/access (access.db 생성)
   makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable
   makemap hash /etc/mail/domaintable < /etc/mail/domaintable
   makemap hash /etc/mail/mailertable < /etc/mail/mailertable
5. service sendmail start

// sasl 설정 //

1. vi /etc/mail/sendmail.mc
   -> dnl 주석풀기
   -> Daemon_Option ('port=smtp,Addr=,Name=MTA')dnl
2. m4 /etc/mail/sendmail.mc > /etc/sendmail.cf (sendmail.cf 파일 재 생성, sendmail-cf 필요)
3. vi /etc/mail/sendmail.cf
   -> #Cwlocalhost (주석처리) -> Cw"도메인이름"
   -> /var/spool/mqueue/q* 설정 (/var/spool/mqueue 밑에 q1~q10 멀티큐 폴더 생성)
4. service sendmail restart
5. service saslauthd restart
6. telnet localhost 25
   -> ehlo localhost
      auth Login Plain 나오면 성공
7. /etc/sysconfig/saslauthd 에서 MECH=pam 으로 설정

//  pop3 서버 구축(dovecot 추천) //

1. vim /etc/dovecot.conf
   -> protocols = imap imaps pop3 pop3s (주석풀고 설정)
   -> listen = [::]

2. ntsysv -> dovecot 서비스 체크

서비스 실행
3. service dovecot start

// 서비스 동작 확인 //

1. telnet localhost 110
   -> user myid(계정명)
      +OK Password required for myid.
   -> pass 1234(패스워드)
      +OK myid has 0 visible messages (0 hidden) in 0 octets.
   -> quit

// 관리자 계정 추가(master@aaa.com, webmaster@aaa.com) //
  1. adduser webmaster
  2. passwd webmaster
  3. vi /etc/aliases
     -> 맨아래 # Person who should get root's mail
        root:           myid,webmaster (주석풀고 계정명 추가, root계정으로 오는메일을 myid,webmaster계정도 받아볼수 있음)
  4. cd /etc
  5. makemap hash aliases < aliases (aliases.db생성)
  6. 확인 : strings /etc/aliases.db | grep 계정명

참고) 디렉토리 생성없이 계정만 추가 : adduser -M 계정명
      디렉토리 삭제동반하는 계정삭제 : userdel -r 계정명

출처 : http://blog.naver.com/mirazi9

setting & testing saslauthd

Release Found:Red Hat Enterprise Linux 3

Postfix can be configured to relay mail for users at remote locations with a valid username and password combination. Following this guide will allow Authenticated SMTP and passwords to be sent in plain text. A secure transport layer should be implemented to ensure that usernames and passwords can not be eavesdropped while in transit

Authenticated SMTP requires users who are not in the "mynetwork" directive within /etc/postfix/main.cf to supply a valid username and password before the mail server will forward mail.

This configuration requires Postfix to be installed and be configured to accept incoming mail on an Internet facing interface.

  1. Open /etc/postfix/main.cf with your editor and add the line smtpd_sasl_auth_enable = yes

    smtpd_sasl_auth_enable = yes

    This line informs Postfix to enable SMTP AUTH when users not in the mynetwork directive attempt to send mail using this Postfix mail server to users not in the domain which Postfix has been configured to listen on.

  2. Also in /etc/postfix/main.cf, add smtpd_sasl_security_options=noanonymous


    This disables anonymous style logins for SMTP AUTH. Without this line anyone will be able to use your machine as an open relay.

  3. Again in /etc/postfix/main.cf, add the smtpd_recipient_restrictions as specified below:

    smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination, check_relay_domains

    This line sets the restrictions for clients attempting to relay mail through your mail server.

  4. Edit /etc/sysconfig/saslauthd and set the value of MECH (Abbrevition of the word mechanism) to pam:


    Setting this value to pam, sets saslauthd to use the local Plugguable Authentication Modules (PAM) subsystem to validate each username and password.

  5. Ensure that saslauthd will start on boot by adding it to the third and fifth runlevels.

    /sbin/chkconfig --level 35 saslauthd on

  6. Start or restart the saslauthd service:

    /sbin/service saslauthd start
    /sbin/service saslauthd restart

  7. Finally start or restart Postfix:

    /sbin/service postfix start
    /sbin/service postfix restart

The Postfix server should now be started and allow relaying of mail from authenticated clients. You can confirm this by connecting to the mail server using the telnet application.

Most communication with the mail server can be done in plain text, but the authentication information must be encoded in Base64.

You can generate this information by modifying the line below, replacing the username and password with a valid username and password that can be authenticated by the Postfix server.
perl -MMIME::Base64 -e 'print encode_base64("username\0username\0password");'
It should produce a string similar to the format below.


Do not loose the generated string as it will be used shortly.

Authentication can be tested by connecting to the mail server with telnet and manually entering the SMTP information.

In the example below the section in bold is what should be typed. Replace the string after AUTH PLAIN with the Base64 string created above

# telnet mail.example.com 25
Connected to mail.example.com (
Escape character is '^]'.
220 mail.example.com ESMTP Postfix
EHLO anotherhost.com
250-SIZE 10240000
AUTH PLAIN dXNlcm5hbWUAdXNlcm5hbWUAcGFzc3dvcmQ=
235 Authentication successful
221 Bye

The line "250-AUTH PLAIN LOGIN GSSAPI DIGEST-MD5 CRAM-MD5" shows that the Postfix server allows users to authenticate.

For more information, visit the Red Hat Postfix HOWTO.

참고 사이트 : http://wiki.dovecot.org/

Trackback 0 Comment 0
2009. 5. 18. 14:26

메일로 들어오는 바이러스 차단 AntiVir Milter 설치 및 운영

작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
작성일 : 2003.02.10
수정일 : 2003.07.21
정리일 : 2003.08.19
H+BEDV AntiVir는 파일시스템, 메일(AntiVir Milter), 웹(AntiVir WebGate)을 통한
바이러스를 검사해주는 스캐너이다. 패턴이 업데이트되므로 최신 바이러스까지 검사할수
있다. Linux, OpenBSD, FreeBSD 등의 OS를 지원한다.
국내에서도 여러 곳에서 쓰고 있는 것으로 아는데, 설치 및 운영에 대한 글이 한글로
된 것을 찾기 힘들어(?) 기존에 써뒀던 글을 좀 다듬어 올린다.

AntiVir는 개인에 한하여 무료로 쓸 수 있는 key를 제공한다.
1개의 key 파일로
AntiVir for Linux and FreeBSD, AVMailGate for Linux,
AntiVir for Linux Workstation, AntiVir Command Line Scanner for Linux
를 사용할 수 있다.

1. AntiVir Milter 설치

http://www.hbedv.com/ -> Downloads (http://www.hbedv.com/download/download.htm)
에서 AntiVir Milter for Linux (avlxmlt.tgz) 를 받아온다.

[root@truefeel root]# tar xvfz avlxmlt.tgz
[root@truefeel root]# cd antivir-milter-x.y.z  (x.y.z 는 버전)

INSTALL 파일을 읽으면 설치 방법이 잘 나와 있으니 참고하기 바란다.

   1) 실행 파일 설치  
   mkdir /usr/lib/AntiVir
   cp bin/avmilter /usr/sbin
   cp script/avq   /usr/lib/AntiVir (AntiVir Milter용 메일큐 관리스크립트)
   ln -s /usr/lib/AntiVir/avq /usr/sbin/avq

   AntiVir for Linux를 설치한적이 없을 경우 다음과 같이 엔진까지 함께 복사
   cp bin/antivir  /usr/lib/AntiVir
   ln -s /usr/lib/AntiVir/antivir /usr/sbin/antivir

   ※ AntiVir for Linux(Scanner를 말함)는 installer가 제공되어 쉽게 설치할 수 있으며,
      운영중에 AntiVir Milter를 추가 설치가 가능하다.
      저는 하나의 시스템은 AntiVir 운영중에 AntiVir Milter를 추가 설치했고,
      다른 시스템은 AntiVir Milter부터 설치 운영하고 있다.

   2) 패턴 파일(antivir.vdf) 및 환경 파일 설치

   default로 avmilter는 uucp:uucp 권한으로 실행된다.

   cp vdf/antivir.vdf   /usr/lib/AntiVir
   cp etc/avmilter.conf /etc
   cp etc/antivir.conf  /etc (AntiVir를 설치한 적이 없는 경우)

   3) 부팅용 스크립트 복사

   cp init.d/rc.avmilter /etc/rc.d/init.d/avmilter
   chkconfig --add avmilter

2. License key 받기

AntiVir for Linux  Private User Registration ( http://www.hbedv.com/private/ )
에 각 항목을 입력하면 해당 메일로 라이센스 파일이 온다.
hbedv.key, lic_info.txt(이 txt파일은 없어도 운영에는 문제가 없지만)를
/usr/lib/AntiVir 로 복사하고 hbedv.key는 avmgate.key이름으로도 복사한다.

cp hbedv.key lic_info.txt /usr/lib/AntiVir (AntiVir를 설치한 적이 없는 경우)

cp hbedv.key /usr/lib/AntiVir/avmgate.key
chown uucp:uucp /usr/lib/AntiVir/avmgate.key

3. Milter용 메일 스풀 디렉토리 생성
  (/etc/avmilter.conf 에서 경로와 실행 user default값 변경 가능)

mkdir /var/spool/avmilter
cd    /var/spool/avmilter
mkdir incoming outgoing rejected

chown -R uucp:uucp /var/spool/avmilter
chmod -R 700       /var/spool/avmilter

4. sendmail.cf 설정

# Antivir Milter
Xavmilter, S=inet:3333@localhost, F=R, T=S:10m;R:10m;E:10m
O InputMailFilters=avmilter

메일을 송수신하게 되면 sendmail은 3333포트의 avmilter에게 전달하고, avmilter는
바이러스가 없으면 해당 사용자에게 전송하게 된다.  만약 바이러스가 존재하면
avmilter 큐에 저장을 해두며, 송수신자엑 메일에 바이러스가 있음을 알린다.
(환경 설정에 따라 알리지 않을 수 있다.)

5. 실행하기
/usr/sbin/avmilter -p inet:3333@localhost 또는 /etc/rc.d/init.d/avmilter start
/etc/rc.d/init.d/sendmail restart (sendmail.cf 설정 변경했으므로 재실행 필요)

netstat -atnp 로 동작중인지 확인해보자.
Proto Recv-Q Send-Q Local Address   Foreign Address  State  PID/Program name
tcp   0      0*        LISTEN 4259/avmilter

/etc/rc.d/init.d/avmilter start 할 때

can't initialize scan engine

오류가 발생했다면 /var/tmp 에 쓸 수 있는 권한이 있는지 확인해본다.
또는 /usr/lib/Antivir/antivir가 정상적으로 복사가 된 것인지도 확인해봐야한다.

※ Virus 메일일 때, 송수신자에게 모두 alert 메시지를 보내려면,
   /etc/avmilter.conf 에 다음 항목을 YES로 설정

   VirusAlertToRcpt                 YES
   VirusAlertToSender               YES

   설정 변경 후 반드시 avmilter 를 재실행해야함.

※ 패턴이 매일 자동 업데이트 되도록 cron 에 다음을 넣어둔다.

20 4 * * * /usr/lib/AntiVir/antivir --update -q

6. 바이러스를 정상적으로 체크하는지 확인하는 방법

   1) eicar 표준 안티바이러스 테스트 파일을 메일로 첨부해서 보내면 된다.
      아래에 옮겨둔 68bytes 를 eicar.com.txt 로 저장한 후 첨부하거나 메시지로 써서
      외부에서 root@호스트명 으로 보낸다.

   http://www.eicar.org/anti_virus_test_file.htm 에서 eicar.com.txt를 받을 수도 있다.

   2) 만약 postmaster 통해서 다음과 같은 메시지를 받았다면 바이러스를 정상적으로
      검사하고 있다는 의미이다.

.. 생략 ..
Subject: AntiVir ALERT [mail from: truefeel <truefeel@???????.net>]
X-AntiVirus: checked by AntiVir Milter 1.0.4; AVE; VDF

* * * * * * * * * * * * * * * AntiVir ALERT * * * * * * * * * * * * * * *
This version of AntiVir is licensed for private and non-commercial use.

AntiVir has detected the following in a mail sent through your server:


The mail was not delivered.

.. 생략 ..

7. AntiVir Milter용 메일큐 관리

AntiVir는 avq라는 스크립트를 제공한다.
[root@truefeel root]# avq

S ---Queue ID--- --Size-- ---Sender/Recipients-------
v 06191-3F35903C    12425 <????@??????.?????.kr>

바이러스가 있다고(State가 v) 판단되어 발송이 되지 않고 큐(/var/spool/avmilter)에
메일이 1개 남아있음을 나타낸다. 필요없는 메일이면 큐를 clear 시킨다.

[root@truefeel root]# avq --remove=06911-3F35903C
ctor: /var/spool/avmilter/rejected/vf-06911-3F35903C
avq: message id '06911-3F35903C' removed.
AntiVir Milter mail queue is empty.
[root@truefeel root]#
[root@truefeel root]# avq
AntiVir Milter mail queue is empty.
[root@truefeel root]#

8. syslog 통해서 남는 로그 (/var/log/maillog)

   1) 실행할 수 없는 예

   Mar 14 19:50:14 free avmilter[19330]: Scan engine is not available - exiting!
   Mar 14 19:50:14 free avmilter[19330]: can't initialize scan engine

   2) avmilter 실행할 때

   Jul 21 22:20:36 truefeel avmilter[5347]: engine version:
   Jul 21 22:20:36 truefeel avmilter[5347]: vdf version:
   Jul 21 22:20:36 truefeel avmilter[5347]: running in private mode

   3) 메일에 virus가 감지될 때 (/var/log/maillog)

   Jul 21 22:24:08 truefeel avmilter[5405]: Alert! the file "/var/tmp/av-05405-jfej1c/av-1" contains "W32/Nimda.eml" virus
   Jul 21 22:24:08 truefeel avmilter[5405]: Potential malicious code has been found - mail will be rejected.

   4) 메일에 virus 감지될 때 antivir (/var/log/messages)

   Jul 21 22:28:35 truefeel antivir[5535]: AntiVir ALERT: [W32/Nimda.eml virus] /var/tmp/av-05531-oMFI2L/av-1 <<< Contains code of the Windows virus W32/Nimda.eml

9. AntiVir 로 파일시스템의 바이러스 검사

/usr/sbin/antivir 로 링크도 해뒀으니 바이러스 검사도 쉽게 할 수 있을 것이다.

사용자 홈 디렉토리만 검사를 해보자.
--allfiles 옵션은 모든 파일을, -s는 서브 디렉토리까지 검사하라는 것이다.
만약 link를 따라 검사하기를 원하지 않으면 -nolnk 까지 추가해서 하면 된다.

[root@truefeel root] antivir --allfiles -s /home

AntiVir / Linux Version 2.0.7-41
Copyright (C) 1994-2003 by H+BEDV Datentechnik GmbH.
All rights reserved.  

Loading /usr/lib/AntiVir/antivir.vdf ...                                                                                  

VDF version: created 18 Jul 2003                                                                                

For private, non-commercial use only.
AntiVir license: ?????????? for Jinho ????????, ??????

\ /home/oracle/oui/bin/linux/libclntsh.so.9.0

검사가 완료되면 다음과 같이 표시해준다.

----- scan results -----
directories:     1017
       files:     5193
      alerts:        0
   scan time: 00:00:46
Thank you for using AntiVir.

삼바(samba)로 윈도 시스템과 공유를 할 때 antivir는 위력을 발휘할 것이다.
저는 파일서버로 운영중인 Network Drive(자체 OS, SMB 지원하는)장비를 검사하는데
antivir가 큰 도움이 되었다.

10. 맺음말

운영중에 문제가 생기면  
AntiVir MailGate Linux FAQ and Answers ( http://www.hbedv.com/support/mailgatefaq_e.htm )
가 도움이 될 것이다.


메일 바이러스 차단 AntiVir Milter FAQ (문제해결편)

Antivir Milter 설치는 간단합니다. 그러나
- 설치 환경이 다양하고
- 한글로 된 문서를 찾기가 쉽지않아서
순서대로 했는데 문제 발생할 때 해결책 찾기가 쉽지 않았을 겁니다.

저에게 직접 질문한 것과 KLTP를 통해 질문한 것을 정리한 것에 불과합니다.
Antivir툴의 전문가도 아닌데 여러 질문을 받다보니 여기까지(?) 오게 됐습니다.
문제 해결에 도움이 되기를...

Q1) 솔라리스에서도 사용할 수 있습니까?

A1) Antivir Milter는 Linux, FreeBSD, OpenBSD용만 있습니다.

Q2) Qmail에서는 Antivir Milter 사용은?

A2) Antivir Milter는 sendmail용입니다.

sendmail의 Milter API를 이용해서 동작합니다.
그러나 qmail에서 전혀 사용할 수 없는 것은 아닙니다.
AntiVir MailGate 라는게 있습니다.

AntiVir MailGate for linux, freebsd, openbsd

sendmail은 물론 qmail까지 지원합니다.
qmail이 메일을 받으면 mailgate에 넘겨서 검사 후에 다시 qmail이 받는 형태로
처리를 합니다.
linux에서 설치는 avinstall.pl라는 인스톨러가 있으니 쉽게 가능합니다.
설정은 INSTALL.qmail을 살펴보기 바랍니다.
qmail을 두개 띄우고 이리저리 넘겨 받는 과정이 필요합니다.

Q3) 설정후 sendmail 실행시에 unknown configuration line "Xavmilter...  에러

/etc/rc.d/init.d/sendmail restart 에서

unknown configuration line "Xavmilter, S=inet:3333@localhost, F=R,
554 /etc/sendmail.cf: line 1217: readcf: unknown option name InputMailFilters

와 같은 에러가 발생했습니다.

A3) Sendmail이 Milter 기능을 포함하지 않고 컴파일되어 있습니다.

Milter API는 sendmail 8.10.x 이상이면 가능하나 컴파일할 때 제외(default로
컴파일하면 제외됨)된 걸로 판단됩니다.

레드햇 7.2 이상에서는 Sendmail Milter API를 쓸 수 있도록 컴파일되어 있습니다.
이전 배포판 버전이더라도 최근 업데이트된 sendmail rpm을 설치하면 해결됩니다.
레드햇을 사용하시면 다음 주소에서 받아서 설치하세요.

위 rpm패키지는 sendmail 8.11.6입니다.

설치는 어떻게 하는지 아시죠?
rpm -Fvh sendmail-8.11.6-??.??.????.rpm
rpm -Fvh sendmail-cf-8.11.6-??.??.????.rpm
rpm -Fvh sendmail-devel-8.11.6-??.??.????.rpm
rpm -Fvh sendmail-doc-8.11.6-??.??.????.rpm

이래도 잘 안되면 직접 컴파일해야 합니다.
컴파일하게 되면 Build 전에 devtools/Site/site.config.m4 작성하고
설치 후에 sendmail.cf 만드는 과정들이 필요합니다.

Q4) AntiVir Milter실행시 can't initialize scan engine 에러가 발생

A4) 여러가지의 경우가 있습니다.

  가장 먼저 /usr/lib/Antivir/antivir를 실행해보세요.

  Antivir Milter는 메일 바이러스 검사를 위해 antivir를 호출을 하므로
  antivir가 정상적으로 실행할 수 없는 환경이면 위의 에러를 발생하고 종료합니다.

  1) /var/tmp, /tmp의 퍼미션이 1777(rwxrwxrwt)가 아닌 경우

     chmod 1777 /var/tmp/ 와 같이 퍼미션을 변경할 수 있습니다.

  2) 라이센트 파일(hbedv.key, avmgate.key)이 설치안되어 있거나
     uucp 사용자가 읽을 수 없는 경우

     이럴 때 직접 쉘에서 antivir실행하면 DEMO mode라고 나옵니다.

     # antivir
     AntiVir / Linux Version 2.0.8-1
     Copyright (C) 1994-2003 by H+BEDV Datentechnik GmbH.
     All rights reserved.

     Loading /usr/lib/AntiVir/antivir.vdf ...

     AntiVir is running in DEMO mode.
     ... 생략 ...

     라이센스를 받지 않았다면 http://www.hbedv.com/private/ 에서
     받아 설치하세요. 퍼미션은 제 글을 읽어보면 됩니다.

  3) /usr/lib/Antivir/antivir가 임의로 변경된 경우

    antivir는 다른 백신프로그램처럼 자체 진단기능이 있습니다.
    자신이 임의로 변경됐다고 판단되면
    211 오류(Programm aborted, because the self check failed)를 발생하며
    이런경우는 드믈겠지만 Linux/OSF-8759 웜 바이러스 등에 걸린 경우
    실행 파일이 변경되므로 저런 현상이 생길 수 있습니다.

  4) 위의 3가지다 해당이 안되는 경우

    /usr, /usr/lib, /var 등의 디렉토리의 퍼미션을 확인하세요.
    Antivir Milter는 디폴트로 uucp:uucp 사용자:그룹으로 실행됩니다.
    따라서 /usr 디렉토리가 만약 711(rwx--x--x)라면 실행할 수 없습니다.
    755(rwxr-xr-x)로 변경해보세요.

Q5) AntiVir Milter실행시 chdir to "/var/spool/avmilter" failed - exiting!
    에러 발생

A5) Antivir Milter는 스풀디렉토리의 소유자와 퍼미션을 검사합니다.
    만약 700(rwx------)이 아니다면 위의 에러를 발생하며 종료합니다.

chown -R uucp:uucp /var/spool/avmilter
chmod -R 700       /var/spool/avmilter

로 변경하면 해결됩니다.

Q6) sendmail.cf 설정부분에서
    Xavmilter, S=inet:3333@localhost, F=R, T=S:10m;R:10m;E:10m
    O InputMailFilters=avmilter

    를 sendmail.cf 내 어디에 위치해야 하나요?

A6) 위치는 상관없으나, 옵션 설정하는 부분이 있습니다.
그 설정 부분에 두는게 좋을 것 같습니다.

이를 테면
O AliasFile=/etc/aliases
와 같이 들어 있는 부분 근처에.

Q7) /var/log/messages에 쌓이는 로그를 다른쪽으로 돌리고 싶은데 가능하나요?

A7) Antivir Milter를 통해 남겨진 로그를 다른 곳으로 옮기는 설정은 없습니다.
   (지금까지 확인한바로)

그러나 메일과는 무관하게 쉘상에서 antivir를 실행하여 남기는 로그는 가능합니다.
설정 파일인 /etc/antivir.conf 를 수정합니다.

LogTo /var/log/antivir.log
SyslogFacility local1
SyslogPriority debug

1번째줄 = /var/log/antvir.log에 로그가 남도록 합니다.
다음 2줄= messages에 로그가 남지 않도록 합니다. (임시적인 방법)

Antivir가 남기는 로그의 facility는 local1, priority는 debug로 변경했으므로
syslog.conf의 디폴트 설정이라면 messages에 남기지 않습니다.
syslog.conf 설정을 수정한 적이 있다면  
local1.debug, local1.*, *.debug, *.* 등의 줄이 있는지 확인해봐야 합니다.

Q8) /var/spool/avmilter/rejected에 있는 df, vf는 무슨 의미인가요?

A8) rejected에 있다는 것은 바이러스나 메일 mime 타입에 문제가 있다고 Antivir가
판단을 하고 메일 송수신을 거부한 것을 말합니다.

df = 메일 내용이 있는 data file
vf = 메일내에 바이러스가 발견됐을 나타내는 file
df-ID와 vf-ID 쌍으로 있죠? xxxxx-xxxxxxxx가 같은 것이 동일 메일에 대한 것입니다.

antivir는 이런 형태로 거부가 될 때 /etc/avmilter.conf 설정에 따라 송신자나
수신자에 메일내에 바이러스가 발견됐음을 알림니다.

/var/spool/avmilter/rejected 에 쌓인 메일을 보시고 필요없는 메일이라면
rm -f [dv]f*
로 모두 지우세요.

Q9) /var/spool/avmilter/rejected/ 에 너무 많은 메일이 걸러집니다.
A9) avq 명령어(제 글에서는 /usr/lib/Anivir/avq에 설치했음)을 이용해서
    큐를 확인할 수 있습니다.

필요없는 메일이라면 cron을 통해 특정시간마다 삭제하세요.

crontab -e
해서 다음과같이 넣으면 매일 새벽 0시 5 분에 rejected된 메일을 삭제합니다.

5 0 * * * rm -f /var/spool/avmilter/rejected/*

Q10) 바이러스 패턴 업데이트는 어떻게 하나요?

A10) 쉘상에서 직접한다면 다음과 같이 실행하면 됩니다.

# antivir --update
AntiVir / Linux Version 2.0.8-8
Copyright (C) 1994-2003 by H+BEDV Datentechnik GmbH.
All rights reserved.

checking for updates <=> [vdf, loaded] <=> [engine, running] <=> [program, running]

AntiVir is up-to-date

cron에 넣는 방법은 먼저 쓴 글에 있으니 찾아보세요.

Q11) 패턴 업데이트 중
sh: /tmp/antivir_20165_1640464374/download/antivir: 허가 거부됨 에러 발생

A11) /tmp 퍼미션이 정상이라면 저도 원인은 모르겠습니다.

임시로 수동 업데이트 하세요.

http://www.antivir.de/down/vdf/vdf.zip 를 받습니다.
파일을 풀면 (unzip vdf.zip) 파일 3개가 나올겁니다.
그중에 antivir.vdf 만 /usr/lib/Antivir 로 복사합니다. 퍼미션은 644로.

# chmod 644 antivir.vdf
# mv antivir /usr/lib/Antivir/

출처 : http://coffeenix.net/

Trackback 0 Comment 0