본문
postfix 설치
대부분 postfix는 설치되어 있다.
만약 설치되어 있지 않다면 postfix를 설치해야 한다.
$ sudo apt-get install postfix ; 설치
postfix 설정
$ sudo dpkg-reconfigure postfix ; 환경 설정
인터넷 사이트(internet site)
<root나 root권한을 가지는 사용자 계정>
Postfix Configuration : server.com mail.server.com localhost.server.com localhost
동기 업데이트 설정 Yes/No
Postfix Configuration : 기본 설정을 그대로 사용
procmail : yes
로컬 주소 확장용 문자 : + (기본값)
메일 폴더 설정
sudo postconf -e 'home_mailbox = Maildir/'
procmail은 사용하지 않는것으로 설정
postfix 초기 설치시 기본설정은 procmail 사용으로 되어있다.
마약 초기 설치시 procmail 사용으로 설정하였다면 아래와 같이 사용하지 않는것으로 수정할것
그렇지 않으면 Maildir폴더로 메일이 넘어가지 않는다. (mbox에 저장됨)
sudo postconf -e "mailbox_command = "
SASL을 사용하여 SMTP인증을 하기 위한 postfix 설정
sudo postconf -e 'smtpd_sasl_local_domain ='
sudo postconf -e 'smtpd_sasl_auth_enable = yes'
sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
sudo postconf -e 'broken_sasl_auth_clients = yes'
sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
sudo postconf -e 'inet_interfaces = all'
/etc/postfix/main.cf에 위의 내용이 저장된다.
/etc/postfix/sasl/smtpd.conf에 다음 내용 추가
pwcheck_method: saslauthd
mech_list: plain login
TLS 인크립션과 인증을 위한 인증서 생성
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
sudo mv smtpd.key /etc/ssl/private/
sudo mv smtpd.crt /etc/ssl/certs/
sudo mv cakey.pem /etc/ssl/private/
sudo mv cacert.pem /etc/ssl/certs/
들어오고 나가는 메일(incoming & outgoing mail)에 대한 TLS 인크립션 사용을 위해 postfix 설정
sudo postconf -e 'smtpd_tls_auth_only = no'
sudo postconf -e 'smtp_use_tls = yes'
sudo postconf -e 'smtpd_use_tls = yes'
sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/private/smtpd.key'
sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt'
sudo postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'
sudo postconf -e 'smtpd_tls_loglevel = 1'
sudo postconf -e 'smtpd_tls_received_header = yes'
sudo postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
sudo postconf -e 'tls_random_source = dev:/dev/urandom'
sudo postconf -e 'myhostname = server1.example.com'
postfix demon 재시작
sudo /etc/init.d/postfix reload
sasl2 설치(설치되어 있지 않을 경우에)
클라이언트(xp, 맥, 리눅스, etc)에서 메일을 보내려면 인증절차를 위해 필요합니다.
$ sudo apt-get install libsasl2 libsasl2-modules sasl2-bin
...생략...
전에 선택하지 않은 libsasl2 꾸러미를 선택합니다.
libsasl2 꾸러미를 푸는 중입니다 (.../libsasl2_2.1.22.dfsg1-18ubuntu2_all.deb에서) ...
전에 선택하지 않은 sasl2-bin 꾸러미를 선택합니다.
sasl2-bin 꾸러미를 푸는 중입니다 (.../sasl2-bin_2.1.22.dfsg1-18ubuntu2_i386.deb에서) ...
db4.6-util (4.6.21-6ubuntu1) 설정하는 중입니다 ...
libsasl2 (2.1.22.dfsg1-18ubuntu2) 설정하는 중입니다 ...
sasl2-bin (2.1.22.dfsg1-18ubuntu2) 설정하는 중입니다 ...
* To enable saslauthd, edit /etc/default/saslauthd and set START=yes
saslauthd 수정
$ sudo vi /etc/default/saslauthd
START를 yes로 수정하고 PWDIR, PARAMS, PIDFILE를 추가
START=yes
PWDIR="/var/spool/postfix/var/run/saslauthd"
PARAMS="-m ${PWDIR}"
PIDFILE="${PWDIR}/saslauthd.pid"
그리고 OPTION을 다음과 같이 수정한다.
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
/var/spool/postfix/var/run/saslauthd에 대한 dpkg 상태를 업데이트
dpkg-statoverride --force --update --add root sasl 755 /var/spool/postfix/var/run/saslauthd
saslauthd 실행
sudo /etc/init.d/saslauthd start
부팅시 실행되는 /etc/init.d/saslauthd 수정할 필요 없슴
SMTP가 정상동작하는지 테스트
$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.comingmedia.com ESMTP Postfix (Ubuntu)
ehlo localhost
250-mail.comingmedia.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
courier IMAP와 POP3설치
sudo apt-get install courier-pop
sudo apt-get install courier-imap
Maildir 설정
maildirmake /etc/skel/Maildir
maildirmake /etc/skel/Maildir/.Drafts
maildirmake /etc/skel/Maildir/.Sent
maildirmake /etc/skel/Maildir/.Trash
maildirmake /etc/skel/Maildir/.Templates
각 사용자에 대해서
cp -r /etc/skel/Maildir /home/myuser/
chown -R myuser:usergroup /home/myuser/Maildir
chmod -R 700 /home/myuser/Maildir
Test
smtp 테스트
$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.comingmedia.com ESMTP Postfix (Ubuntu)
ehlo yourdomain.com
250-mail.yourdomain.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from: root@yourdomain.com
250 2.1.0 Ok
rcpt to: jhanglim@yourdomain.com
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Subject: My first mail
Hi,
. (and Enter In a new Line)
250 2.0.0 Ok: queued as C515B863FC
quit
221 2.0.0 Bye
Connection closed by foreign host.
jhanglim에게 메일이 정상적으로 도착했는지 확인
su - fmaster
cd Maildir/new
ls
만약 pop3클라이언트(예 : 선더버드)가 동작하고 있다면 Maildir/new폴더가 아니라 Maildir/cur 폴더에 파일이 있을것이다.
이유 : 이미 po3클라이언트가 메일을 받아갔으므로 새로운 메세지가 아니다.
pop3 확인
$ telnet localhost pop3
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Hello there.
user <user ID>
+OK Password required.
pass <user Password>
+OK logged in.
imap 확인
$ telnet localhost imap
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION] Courier-IMAP ready. Copyright 1998-2005 Double Precision, Inc. See COPYING for distribution information.
imap login <user ID> <user password>
imap OK LOGIN Ok.
사용자의 .forward 파일
다음 예와 같이 하면 메일은 자신(cur_user)에게도 가고 forward_user@gmail.com에게도 간다.
예)
$ su - cur_user
$ touch .forward
$ vi .forward
cur_user
forward_user@gmail.com
바이러스와 스팸메일 필터링
<참조> 성능은 별로이다. GMail 스팸 필터가 짱!
설치
sudo apt-get install amavisd-new spamassassin clamav-daemon clamav-freshclam re2c
스팸 필터링을 향상시켜주는 추가 필터 설치 ( 옵션 )
sudo apt-get install pyzor razor
압축 유틸리티 설치
sudo apt-get install file arc gzip bzip2 cabextract zip unzip unrar-free cpio tar zoo arj lzop nomarch pax unzoo
설정
clamav
패키지 설정할때 필요한 기본설정이 되어있다.
amavis
/etc/amavis/conf.d/15-content_filter_mode 파일을 수정해서 스팸과 바이러스를 감지를 활성화 시킴
use strict;
# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.
#
# Default antivirus checking mode
# Uncomment the two lines below to enable it back
#
@bypass_virus_checks_maps = (
\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
#
# Default SPAM checking mode
# Uncomment the two lines below to enable it back
#
@bypass_spam_checks_maps = (
\%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
1; # ensure a defined return
Spamasssassin
/etc/default/spamassassin에서 ENABLED을 1로 설정해서 데몬이 실행되도록 함.
# Change to one to enable spamd
ENABLED=1
postfix integration
/etc/postfix/main.cf에 다음을 추가
content_filter=smtp-amavis:[127.0.0.1]:10024
/etc/postfix/master.cf파일의 맨 마지막에 다음을 추가
smtp-amavis unix - - - - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20
127.0.0.1:10025 inet n - - - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions=
-o mynetworks=127.0.0.0/8
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
<참조>
관련링크
댓글목록
등록된 댓글이 없습니다.