[Linux/우분투] Postfix를 이용한 메일서버 개설

[Linux/우분투] Postfix를 이용한 메일서버 개설

메일서버에 대해 종류도 여러가지고 그런 서버들을 설치해본 결과..
불안정하여 자주 죽거나 충돌이 잦아 좌절하게 되었다.
그리고 여러 시도끝에 이게 그나마 첫성공이라 개설법을 올리려고 한다.

인터넷을 참조해서 수정을 하여 올린것이니 모르는것이 있다면 댓글을 남기도록.

 

우선 작업하기 쉽게 관리자로 접속을 하자.

$ su

 

작업을 시작해보자면 기본적으로 우분투 대부분엔 Postfix가 설치되어 있는데
본인이 설치를 하지 않았다면 수동으로 설치해야 한다.

$ apt-get install postfix

 

다음은 Postfix을 설정 할 것이다. 설치한사람, 설치했었던 사람 모두 따라오도록

$ dpkg-reconfigure postfix

# 인터넷 사이트
# 서버는 도메인으로
# Postfix Configuration : server.com mail.server.com localhost.server.com localhost
# 동기 업데이트 설정은 원하는 값으로
# 나머지 그냥 엔터 연타

 

여기까지 끝났으면 이제 세부적인 설정이 들어가야한다.

# 메일 폴더 설정
$ postconf -e 'home_mailbox = Maildir/'

# procmail 미사용 설정
$ postconf -e "mailbox_command = "

# SASL을 이용해 SMTP 인증을 사용하기 위하여 설정할 것들
$ postconf -e 'smtpd_sasl_local_domain ='

$ postconf -e 'smtpd_sasl_auth_enable = yes'

$ postconf -e 'smtpd_sasl_security_options = noanonymous'

$ postconf -e 'broken_sasl_auth_clients = yes'

$ postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'

$ postconf -e 'inet_interfaces = all'

 

만약 자신이 인증서를 가지고 있다면 그대로 쓰고, 없다면 덤프로 생성한다.

$ 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

$ mv smtpd.key /etc/ssl/private/

$ mv smtpd.crt /etc/ssl/certs/

$ mv cakey.pem /etc/ssl/private/

$ mv cacert.pem /etc/ssl/certs/

 

인증서 생성이 되었으면 관련 TLS인크립션 사용을 위해 설정을 해주어야 한다.
하단의 빨간글씨는 알아서 수정해라.

$ postconf -e 'smtpd_tls_auth_only = no'

$ postconf -e 'smtp_use_tls = yes'

$ postconf -e 'smtpd_use_tls = yes'

$ postconf -e 'smtp_tls_note_starttls_offer = yes'

#하단 경로는 자신에게 맞춰 수정
$ postconf -e 'smtpd_tls_key_file = /etc/ssl/private/smtpd.key'

$ postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt'

$ postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'

$ postconf -e 'smtpd_tls_loglevel = 1'

$ postconf -e 'smtpd_tls_received_header = yes'

$ postconf -e 'smtpd_tls_session_cache_timeout = 3600s'

$ postconf -e 'tls_random_source = dev:/dev/urandom'

#이 아래 주소는 알아서 수정
$ postconf -e 'myhostname = server1.example.com'

 

smtp인증에 관한 설정

$ nano /etc/postfix/sasl/smtpd.conf

pwcheck_method: saslauthd

mech_list: plain login

 

이제 데몬을 재시작 할 것이다.

$ service postfix reload

 

여기까지 작업이 끝났으면 기본적인 Postfix 설정은 완료되었다 볼 수 있다.
그럼 다음 작업으로 sasl2를 설치 할 것이다. 인증 절차를 위한 모듈로 그냥 따라와라.

$ apt-get install libsasl2-2 libsasl2-modules sasl2-bin

 

saslauthd를 수정 할 것이다.

$ nano /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-statoverride --force --update --add root sasl 755 /var/spool/postfix/var/run/saslauthd

$ service saslauthd start

 

이제 IMAP과 POP3를 설치 할 것이다.

$ apt-get install courier-pop courier-imap

 

다음 Mail 디렉토리 생성

$ mkdir /etc/skel

$ mkdir /etc/skel/Maildir
$ maildirmake /etc/skel/Maildir/.Drafts
$ maildirmake /etc/skel/Maildir/.Sent
$ maildirmake /etc/skel/Maildir/.Trash
$ maildirmake /etc/skel/Maildir/.Templates

 

사용자에 대해 메일 폴더 생성(user는 메일 사용자이며 우분투 계정이다)

$ cp -r /etc/skel/Maildir /home/myuser/

$ chown -R myuser:usergroup /home/myuser/Maildir

$ chmod -R 700 /home/myuser/Maildir

 

여기까지하면 메일 서버의 설치가 끝났다.
이제 메일이 잘 전송되는지 테스트해보자.

$ 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 .

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.

 

여기까지 하면 발송된다.
메일을 로컬 유저에게 발송 했을 경우 확인해보려면

$ cd /home/user/Maildir/new
$ ls

 

위와 같이 타이핑하면 메일관련 파일이 생성되어 있을 것이다.
그럼 성공!

여기까지 매일 서버 설치였으며 다음번엔 roundcube 즉 웹메일 설치에 관해 포스팅 하겠다.


게시됨

카테고리

작성자

태그:

댓글

“[Linux/우분투] Postfix를 이용한 메일서버 개설”에 대한 67개의 응답

  1. park jong bum 아바타
    park jong bum

    Thanks for your blog

    1. 김주환 아바타

      Thank you for visiting.

  2. 초보 아바타
    초보

    와 ~ 보구파–

    1. 김주환 아바타

      댓글쓰는 귀찮은 구조에 짜증이 나시겠지만,
      성의있는 댓글 감사합니다ㅎ
      설지 잘 마무리 하시어 좋은결과 내시길 바래요~^^

  3. 초보 아바타
    초보

    잘 봤습니다.
    이거 물어봐도 되겠는지…
    너무 하다하다 안되서 도움 청해요.
    저는 CentOS에 Postfix 메일서버를 설치했는대요.
    hotmail에서 메일 보내면 받고, 내 메일서버에서 hotmail에 메일보내도 받아요.
    그래서 outlook에서 계정만들어 붙으려니까 영 안되요,
    메일서버 로그인은 하는데 테스트 메일 보내기 실패해요.
    왜 그럴가요?

    1. 김주환 아바타

      아웃룩을 써보진 않았지만
      저도 예전에 서버쪽에서 웹메일 솔루션을 통해 발송 및 수신 성공,
      명령어를 통해서도 성공을 하였으나, 모바일 기기에서 메일 클라이언트 앱으로 시도를 하니 메일발송이 실패한 적이 있었습니다.
      우선 발송이 실패라면 smtp쪽, 즉 발송에 관한 호스트 주소나 이런쪽을 먼저 확인 해보시고,
      이후 /var/log/maillog 의 로그를 확인 해보시길 바랍니다.

      이유는 여러가지가 있습니다.
      세팅시 호스트 도메인을 잘못 설정 할 경우도있고,
      혹은 인증서 관련 오류 일수도 있습니다.
      저 같은 경우 수신에도 문제가 있어서 인증서를 dump로 만들어 연결하고, 이후 클라이언트에서 설정할 때 보안 방식을 맞춤으로서 성공 하였습니다.
      보안 방식 잘 확인 해보시구요.

      제 경우 수신 imap.도메인에 보안유형 SSL 993포트
      발송은 제 서버에 맞추어 설정한 mail.도메인 보안유형 해제(TLS로 안되더군요) 587포트로 성공 하였습니다.
      발송만 맞춰 잘 확인해보시고, 로그 확인해보세요.
      네이버 같은경우는 인증서가 없으면 뭐 수신을 안시킨다던지 이런 정책을 내놓았더군요.
      로그인은 성공하는지, 수신처에 바인딩은 되었는가 등등 확인 해보시면 결과가 나올 것이라 생각 됩니다.

  4.  아바타
    익명

    감사합니다

    1. 김주환 아바타

      자료에 문제가 있다면 피드백 주시고,
      더 좋은자로 올리도록 하겠습니다^^

  5. SH 아바타

    보고싶어요

    1. 김주환 아바타

      메일설치 잘 마무리 하시길 기원합니다ㅎㅎ

  6.  아바타
    익명

    좋은 정보 고맙습니다.

    1. 김주환 아바타

      감사합니다^^

  7. ldh 아바타
    ldh

    좋은 정보 감사합니다~!!

    1. 김주환 아바타

      좋게 봐주셔서 감사합니다^^

  8.  아바타
    익명

    글 보구싶어요.

    1. 김주환 아바타

      감사합니다^^

  9.  아바타
    익명

    좋은 정보 감사합니다. 화이팅!

    1. 김주환 아바타

      감사합니다! 화이팅!!

  10. フクロウ 아바타
    フクロウ

    메일 서버 설치를 위해서, 글을 남깁니다.

    1. 김주환 아바타

      성공하시길 기원합니다!

  11.  아바타
    익명

    감사합니다.

    1. 김주환 아바타

      저도 감사합니다ㅎㅎ

  12. armwia 아바타
    armwia

    감사합니다.

    1. 김주환 아바타

      방문 감사드립니다^^

  13.  아바타
    익명

    내용 감사합니다

    1. 김주환 아바타

      방문 감사드립니당ㅎㅎ

  14. 초보 아바타
    초보

    /var/log/maillog에 이런 로그가 남았더군요.

    warning: 193.189.116.66: hostname 193.189.116.66.ionic.pl verification failed: Name or service not known
    님이 지적하신 인증서문제인것 같은데
    초학도다 보니 모를게 많아요…
    인증서를 dump로 만들어 연결한다는건 어떻게 하는건가요?

    1. 초보 아바타
      초보

      혹 인증서 없이는 못하는가요?

      1. 김주환 아바타

        내부에서 발송하는 것에 대해 인증 관련 문제라 보는데요.

        우선 저도 잠시 찾아보았습니다.
        https://www.howtoforge.com/community/threads/postfix-can-send-mail-in-outlook.50738/
        해당 글을 참고하니, 당사자도 해결 했다는 글을 보았는데요.

        1. smtpd_sasl_auth_enable = yes를 no로 변경
        ※ 제 글에 보면 postconf -e ‘smtpd_sasl_auth_enable = no’ 로…

        2. my networks에 자신의 아이피를 등록
        ※ /etc/postfix/main.cf에 보시면 mynetworks부분이 있는데 해당부분에
        본인의 아이피를 적어보세요~

        결과 알려주시면 감사드리겠습니다^^
        해결 할때까지!!

        1. 초보 아바타
          초보

          친절한 댓글 고마워요.
          근데 죄송해요. 아직 해결이 안되요.
          main.cf에 smtpd_sasl_auth_enable 설정이 없던것을
          postconf -e ‘smtpd_sasl_auth_enable = no’
          로 추가했고 mynetworks에 ip주소를 공개IP를 추가했는데 아직 해결 안되요.
          main.cf는
          mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 193.189.116.66
          로 수정하고

          maillog에는

          : warning: 193.189.116.66: hostname 193.189.116.66.ionic.pl verification failed: Name or service not known
          : connect from unknown[193.189.116.66]
          : disconnect from unknown[193.189.116.66]

          이런 로그가 있어요.
          근데 의문되는건 mynetworks_style 에 class, subnet, host뿐인데
          아무 IP나 신뢰하도록 설정할수는 없는지… 혹시 그 문제는 아닌지…

          1. 김주환 아바타

            엇. .잠시만요.
            해결이전에 smtpd…sa..enable이 없다하셨는데
            글 내용보시면 해당옵션을 적용하는 부분이 있었어요.
            세팅들이 제대로 적용 되었는지요.

          2. 초보 아바타
            초보

            다시 따져 보니 헛점이 많았군요.
            많이 수정했어요.
            근데 저는요 Ubunt가 아니라 CentOS에서 해서인지 차이나는 것들이 있어요.
            smtpd인증설정에서 /etc/postfix/sasl/smtpd.conf파일은 존재하지 않아요.
            그리구 apt-get install libsasl2-2 libsasl2-modules sasl2-bin 어떻게 설치해야 할지…

            그래서 인지
            # telnet localhost 25
            하면 위에서처럼 제대로 동작못해요.

          3. 김주환 아바타

            Centos.
            제 현재 서버가 centos인데요.
            해당 os에서 제가 사용한건 postfix와 dovecot 이였습니다.
            설치후 일부세팅으로만으로 잘 구현시켯는데
            이점에대해 다루어야하는데
            관련글을 올리진 않았네요.
            dovecot이 핵심입니다.

          4. 김주환 아바타

            아궁. .진작 centos인줄 알았다면 더 빨리 말씀드렸을텐디. .ㅠ
            dovecot과 인증서관련 세팅만 되면
            이상없을거에요ㅜ

          5. 초보 아바타
            초보

            진작 말씀 올렸을걸,,,, 죄송해요.
            /etc/dovecot.conf 설정에서

            mail_location = mbox:~/mail:INBOX=/var/mail/%u
            pop3_uidl_format = %08Xu%08Xv
            위 2줄 코멘트 해제한것 밖에 없어요.

            인증서관련 쎄팅은 이 글에서 지적된 key, csr 같은 내용인가요?

          6. 초보 아바타
            초보

            죄송하지만 CentOS에서의 메일서버과정도 블로그에 올려주시면 고맙겠어요…

          7. 김주환 아바타

            우선 죄송함과 양해를 구하고자 하는바는
            포스팅을 한다 하면 직접 설치하며 그 경험으로 올려야 하거든요.
            안그러면 올린것과 달리 빠진 정보가 생길수 있기 때문인데,
            아직 메일서버가 존재하고, 서버를 바꾸지 않는이상 당장의 포스팅은 어려울것 같습니다.
            그렇다고 설치한지는 조금 되서 기억을 더듬으며 올리는것은 다소 무리가 있고…
            그래서 잠시 찾아보았는데요.

            https://tocup.net/xe/index.php?mid=tech&category=48494&listStyle=list&document_srl=59338&m=0
            해당 포스팅을보니, 제가 설치했던 상황과 상당히 유사하다고 보입니다.
            roundcube설치까지 매우 흡사한데,
            이 글을 참고하시면 될거라 생각합니다.

            여러 글들을 찾아보다가 이 글이 가장 적합하다고 생각되네요.

            양해 부탁드립니다 (ㅠ_ㅠ)

  15.  아바타
    익명

    댓글 남겨야 정보를 볼 수 있나요?

    1. 김주환 아바타

      그렇습니다 ㅎㅎ
      아, 금요일이네요. 오늘까지만요 ㅎ

  16. 이상호 아바타
    이상호

    다른 로그인 없이 댓글이 가능하네요….우분투 공부하기 시작했는데…자주 들리겠습니당…..
    일단 설치 하고 제일 처음 smtp 구축떄문에 검색해서 방문 하게 되었습니당^^

    1. 김주환 아바타

      네, 익명이 가능합니다 ㅎㅎ
      우분투면 기본 postfix와 sasl을 통해 메일서버를 구축하게 되시겠군요.

  17.  아바타
    익명

    덕분에 셋팅하는데 많은 도움이 되었습니다.

    1. 김주환 아바타

      다행이네요.
      문제점이나 걸리는 부분은 없으셨나요?ㅎㅎ

  18. smy0906 아바타

    감사합니다.

    1. 김주환 아바타

      저야말로 ㅎㅎ

  19. usptone 아바타

    아직 내용은 확인 못했지만 부디 제 문제가 해결 되었으면 합니다.
    전 가상 서버를 두곳에서 사용하고 있는데 vultr.com 가상서버에 우분투 sendmail 을 설치 했는데
    그누보드에서 메일 테스트가 안되는 겁니다. ㅠ,.ㅠ
    부디 이글을 읽고 해결 되었으면 합니다. 짜짠~~

    1. 김주환 아바타

      어떤 증상으로 안되시는지요.
      부디 해결되셨으면 좋겠습니다 ㅠ

  20.  아바타
    익명

    좋은정보 감사요

    1. 김주환 아바타

      감사합니다^^

  21.  아바타
    익명

    아직 보진 않았지만, 좋은 정보 감사합니다^^

    1. 김주환 아바타

      반갑고 감사합니다 ㅎ

  22. 손봉희 아바타

    우분투에 메일 서버를 설치하려고 하는데 구글에서 찾아서 했는데 안되네요.. 결국 국내 메뉴얼 찾다가 여기까지 왔어용. 근데 블로그 신기하네요.. 댓글을 달아야 내용을 볼수있는;;; 어떻게 하신거예요? ㅋㅋ ^^

    1. 김주환 아바타

      지금 해제하려구요.
      방법은 간단해요.
      댓글 쓸때 처리부분에 세션처리 하고,
      문서 내용에 세션에 따른 분기처리를 하였지요~
      나중에 같은 기능을 넣고자 하신다면 이야기해주세요.
      자세히 말씀 드릴께요 ㅎ

  23.  아바타
    익명

    잘 보겠습니다.

    1. 김주환 아바타

      부족한 부분은 얘기 해주세요!

  24. altablue 아바타

    좋은 정보 감사합니다. 덕분에 POSTFIX 설정이 올바로 되었네요. 그런데 이렇게 해놓고 흔히 릴레이를 막고 인증해서 보내기설정을 하려면 받는 메일서버를 설치 해야 하나요?

    1. 김주환 아바타

      흔하게 릴레이에대한 처리라면, 허용 클라이언트에 관한 세부 옵션세팅의 처리이나
      인증세팅에 대한 설정으로 처리 가능합니다.
      구글에 postfix릴레이에 대한 검색을 해보시면 많은 자료를 찾아보실 수 있을겁니다!

  25.  아바타
    익명

    좋은 정보 감사합니다.. 이방법 centos 6.5 로도 가능할까요?

    1. 김주환 아바타

      원래 제 처음 OS가 CentOS 6.x였고, Postfix를 이용하였습니다.
      그걸 토대로 CentOS 7 설치시 참고하여 설치하고, 일부 내용에 추가 제거되긴 하였는데,
      근본적으로 틀은 같아서 충분히 가능할거라 봅니다.

  26.  아바타
    익명

    데몬실행이자꾸실패해요ㅠㅠㅠㅠ

    1. 김주환 아바타

      어떻게 실패한단 말씀이신가요?
      그냥 작동이 안되는건가요?

  27.  아바타
    익명

    centos7 인데 smtp tls 부분이 많은 도움 되었습니다. 감사합니다.(centos7+postfix+ cyrus? ) gmail 에서 표준암호화 된다고 표시되네요. (그래도 스팸으로 빠지고 있지만요. 허허허,,,)

    1. 김주환 아바타

      특히나 리눅스는 모든환경에 맞추기 힘들기에
      일부 정보는 타 정보를 통해 해결하는 경우가 많죠.
      도움이 되었다니 다행이네요,

  28.  아바타
    익명

    많은 도움이 되었습니다. 감사합니다. (centos7+postfix+cyrus? 환경에 smtp tls 부분추가) gmail 에서 표준암호화로 표시되네요.(여전히 스팸으로 분류되지만요. 허허허,,,)

  29. 익명 아바타
    익명

    telney localhost 25 입력을 하면 Escape character is ‘^]’. 까지뜨고는 Connection closed by foreign host. 라고뜨고 나가지는데 이건 어떻게해야되나요?

    1. 김주환 아바타

      허허.. 블로그에 댓글써주는분이 없기에,
      방치를 했더니..ㅠ 해결되셨나요?
      http://www.buggymind.com/80
      이 글을 한번 참고해보시면 좋을것 같아요.

댓글 남기기