사이트 내 전체검색
우분투 메일서버(ubuntu mail server) 구축
로빈아빠
https://cmd.kr/server/964 URL이 복사되었습니다.

본문

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


<참조>

ubuntu help : PostfixBasicSetupHowto

ubuntu help : Postfix

댓글목록

등록된 댓글이 없습니다.

1,139 (5/23P)

Search

Copyright © Cmd 명령어 3.143.237.140