웹사이트 검색

Debian 9에서 Postfix와 웹메일이 포함된 완전한 메일 서버 설치


이 튜토리얼은 Debian 9 릴리스에서 Postfix를 사용하여 전체 메일 서버를 설치하고 구성하는 방법을 안내합니다. 또한 IMAP 프로토콜을 통해 메일을 검색하고 작성하기 위해 Dovecot을 사용하여 계정 편지함을 구성하는 방법도 다룹니다. 사용자는 Rainloop Webmail 인터페이스를 메일 사용자 에이전트로 사용하여 메일을 처리하게 됩니다.

요구사항

  1. 데비안 9 최소 설치
  2. 네트워크 인터페이스에 대해 구성된 고정 IP 주소
  3. 로컬 또는 공개적으로 등록된 도메인 이름입니다.

이 튜토리얼에서는 DNS 확인 처리에 관여하는 DNS 서버 없이 /etc/hosts 파일을 통해서만 구성된 메일 서버 설정을 위해 개인 도메인 계정을 사용합니다.

1단계: Debian의 Postfix 메일 서버 초기 구성

1. 첫 번째 단계에서는 루트 권한이 있는 계정으로 또는 루트 사용자로 직접 컴퓨터에 로그인하고 데비안 시스템이 최신 보안 패치와 소프트웨어 및 패키지 릴리스로 최신 상태인지 확인하세요. , 다음 명령을 실행하여.

apt-get update 
apt-get upgrade 

2. 다음 단계에서는 다음 명령을 실행하여 시스템 관리에 사용할 다음 소프트웨어 패키지를 설치합니다.

apt-get install curl net-tools bash-completion wget lsof nano

3. 다음으로, 원하는 텍스트 편집기로 편집할 /etc/host.conf 파일을 열고 DNS 확인을 위해 파일 시작 부분에 다음 줄을 추가합니다. 먼저 호스트 파일을 읽으십시오.

order hosts,bind
multi on

4. 그런 다음 컴퓨터 FQDN을 설정하고 도메인 이름과 시스템 FQDN을 /etc/hosts 파일에 추가합니다. 아래 스크린샷에 표시된 대로 시스템 IP 주소를 사용하여 도메인 이름과 FQDN을 확인하세요.

그에 따라 IP 주소와 도메인을 바꾸십시오. 그런 다음 호스트 이름을 올바르게 적용하려면 컴퓨터를 재부팅하십시오.

hostnamectl set-hostname mail.linux-console.net
echo "192.168.0.102 linux-console.net mail.linux-console.net" >> /etc/hosts
init 6

5. 재부팅 후 다음 일련의 명령을 실행하여 호스트 이름이 올바르게 구성되었는지 확인합니다. 호스트 이름 명령을 통해 시스템의 도메인 이름, FQDN, 호스트 이름 및 IP 주소가 반환되어야 합니다.

hostname
hostname -s
hostname -f
hostname -A
hostname -i
cat /etc/hostname 

6. 또한 아래 명령을 실행하여 도메인이 로컬 쿼리에 올바르게 응답하는지 테스트하세요. 우리는 DNS 서버를 사용하지 않기 때문에 도메인은 네트워크의 다른 시스템에서 발행한 원격 쿼리를 재생하지 않는다는 점에 유의하세요.

그러나 각 /etc/hosts 파일에 도메인 이름을 수동으로 추가하는 경우 도메인은 다른 시스템에서 응답해야 합니다. 또한 /etc/hosts 파일에 추가된 도메인에 대한 DNS 확인은 호스트, nslookup 또는 dig 명령을 통해 작동하지 않습니다.

getent ahosts mail.linux-console.net
ping linux-console.net
ping mail.linux-console.net

2단계: Debian에 Postfix 메일 서버 설치

7. 메일 서버가 제대로 작동하는 데 필요한 가장 중요한 소프트웨어는 MTA 에이전트입니다. MTA는 서버-클라이언트 아키텍처로 구축된 소프트웨어로, 메일 서버 간의 메일 전송을 담당합니다.

이 가이드에서는 메일 전송 에이전트로 Postfix를 사용합니다. 공식 저장소에서 데비안에 postfix를 설치하려면 다음 명령을 실행하세요.

apt-get install postfix

8. Postfix 설치 과정에서 일련의 질문을 받게 됩니다. 첫 번째 프롬프트에서 Postfix 구성의 일반 유형으로 인터넷 사이트 옵션을 선택하고 [enter] 키를 눌러 계속한 다음 도메인 이름을 시스템 메일 이름에 추가합니다. 다음 스크린샷에 설명되어 있습니다.

3단계: Debian에서 Postfix 메일 서버 구성

9. 그런 다음 Postfix 기본 구성 파일을 백업하고 다음 명령을 사용하여 도메인에 Postfix를 구성합니다.

cp /etc/postfix/main.cf{,.backup}
nano /etc/postfix/main.cf

이제 표시된 대로 main.cf 파일에서 Postfix 구성을 구성합니다.

See /usr/share/postfix/main.cf.dist for a commented, more complete version

smtpd_banner = $myhostname ESMTP
biff = no
appending .domain is the MUA's job.
append_dot_mydomain = no
readme_directory = no

See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
fresh installs.
compatibility_level = 2

TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
information on enabling SSL in the smtp client.

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mail.debian.lan

mydomain = debian.lan

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

#myorigin = /etc/mailname
myorigin = $mydomain

mydestination = $myhostname, $mydomain, localhost.$mydomain, localhost
relayhost = 
mynetworks = 127.0.0.0/8, 192.168.1.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
#inet_protocols = all
inet_protocols = ipv4

home_mailbox = Maildir/

SMTP-Auth settings
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject

myhostname, mydomainmynetworks 변수를 자신의 구성과 일치하도록 바꾸세요.

아래 스크린샷과 같이 Postfix 기본 구성 파일을 덤프하고 최종 오류를 확인하려면 postconf -n 명령을 실행할 수 있습니다.

postconf -n

10. 모든 구성이 완료되면 Postfix 데몬을 다시 시작하여 변경 사항을 적용하고 netstat를 실행하여 Postfix 마스터 서비스가 포트 25에 바인딩되어 있는지 검사하여 서비스가 실행 중인지 확인합니다. 명령.

systemctl restart postfix
systemctl status postfix
netstat -tlpn

3단계: Debian에서 Postfix 메일 서버 테스트

11. postfix가 메일 전송을 처리할 수 있는지 테스트하려면 먼저 다음 명령을 실행하여 mailutils 패키지를 설치하세요.

apt-get install mailutils

12. 다음으로 메일 명령줄 유틸리티를 사용하여 루트 계정으로 메일을 보내고 메일 대기열을 확인하고 루트의 내용을 나열하기 위해 아래 명령을 실행하여 메일이 성공적으로 전송되었는지 확인합니다. 홈 Maildir 디렉토리.

echo "mail body"| mail -s "test mail" root
mailq
mail
ls Maildir/
ls Maildir/new/
cat Maildir/new/[TAB]

13. 다음 명령을 실행하여 메일 로그 파일의 내용을 검사하여 postfix 서비스에서 메일이 어떤 방식으로 처리되었는지 확인할 수도 있습니다.

tailf /var/log/mail.log

4단계: Debian에 Dovecot IMAP 설치 및 구성

14. 이 가이드에서 이메일 메시지를 로컬 수신자의 사서함으로 배달하기 위해 사용할 메일 배달 에이전트는 Dovecot IMAP입니다. IMAP143993(SSL) 포트에서 실행되는 프로토콜로, 읽기, 삭제 또는 읽기 작업을 담당합니다. 여러 이메일 클라이언트 간에 메일을 이동합니다.

IMAP 프로토콜은 또한 각 메시지의 복사본이 서버에 저장되도록 하기 위해 동기화를 사용하고 사용자가 서버에 여러 디렉터리를 만들고 전자 메일을 정렬하기 위해 이 디렉터리로 메일을 이동할 수 있도록 합니다.

POP3 프로토콜의 경우에는 그렇지 않습니다. POP3 프로토콜에서는 사용자가 메일을 정렬하기 위해 서버에 여러 디렉터리를 만드는 것을 허용하지 않습니다. 받은편지함 폴더만 있으면 메일을 관리할 수 있습니다.

Debian에 Dovecot 코어 서버와 Dovecot IMAP 패키지를 설치하려면 다음 명령을 실행하세요.

apt install dovecot-core dovecot-imapd

15. 시스템에 Dovecot을 설치한 후 편집을 위해 아래 dovecot 파일을 열고 다음과 같이 변경합니다. 먼저 /etc/dovecot/dovecot.conf 파일을 열고 다음 줄을 검색하여 주석 처리를 제거합니다.

listen = *, ::

16. 다음으로 편집을 위해 /etc/dovecot/conf.d/10-auth.conf를 열고 아래 발췌문과 같이 아래 줄을 찾아 변경합니다.

disable_plaintext_auth = no
auth_mechanisms = plain login

17. /etc/dovecot/conf.d/10-mail.conf 파일을 열고 다음 줄을 추가하여 대신 Maildir 위치를 사용합니다. 이메일을 저장하는 Mbox 형식입니다.

mail_location = maildir:~/Maildir

18. 편집할 마지막 파일은 /etc/dovecot/conf.d/10-master.conf입니다. 여기에서 Postfix smtp-auth 블록을 검색하고 다음과 같이 변경합니다.

Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
  mode = 0666
  user = postfix
  group = postfix
 }

19. 위의 사항을 모두 변경한 후 Dovecot 데몬을 다시 시작하여 변경 사항을 반영하고 상태를 확인하고 Dovecot이 포트 143 에 바인딩되어 있는지 확인하세요. , 아래 명령을 실행하여.

systemctl restart dovecot.service 
systemctl status dovecot.service 
netstat -tlpn

20. 시스템에 새 사용자 계정을 추가하고 telnet 또는 netcat 명령을 사용하여 메일 서버가 제대로 실행되고 있는지 테스트합니다. 아래 발췌에 설명된 대로 SMTP 서버를 선택하고 새로 추가된 사용자에게 새 메일을 보냅니다.

adduser matie
nc localhost 25
ehlo localhost
mail from: root
rcpt to: matie
data
subject: test
Mail body
.
quit

21. 아래 스크린샷과 같이 사용자의 홈 디렉터리 내용을 나열하여 새 사용자의 편지함에 메일이 도착했는지 확인합니다.

ls /home/test_mail/Maildir/new/

22. 또한 아래 발췌 내용과 같이 IMAP 프로토콜을 통해 명령줄에서 사용자의 편지함에 연결할 수 있습니다. 새 메일이 사용자의 받은 편지함에 나열되어야 합니다.

nc localhost 143
x1 LOGIN matie user_password
x2 LIST "" "*"
x3 SELECT Inbox
x4 LOGOUT

5단계: Debian에서 웹메일 설치 및 구성

23. 사용자는 Rainloop 웹메일 클라이언트를 통해 이메일을 관리합니다. Rainloop 메일 사용자 에이전트를 설치하기 전에 먼저 다음 명령을 실행하여 Rainloop에 필요한 Apache HTTP 서버와 다음 PHP 모듈을 설치하세요.

apt install apache2 php7.0 libapache2-mod-php7.0 php7.0-curl php7.0-xml

24. Apache 웹 서버가 설치된 후 디렉토리 경로를 /var/www/html/ 디렉토리로 변경하고 index.html 파일을 제거합니다. Rainloop Webmail을 설치하려면 다음 명령을 실행하십시오.

cd /var/www/html/
rm index.html 
curl -sL https://repository.rainloop.net/installer.php | php

25. Rainloop 웹메일 클라이언트가 시스템에 설치된 후 도메인 IP 주소로 이동하고 다음 기본 자격 증명을 사용하여 Rainloop 관리 웹 인터페이스에 로그인합니다.

http://192.168.0.102/?admin
User: admin
Password: 12345

26. 도메인 메뉴로 이동하여 도메인 추가 버튼을 누르고 아래 스크린샷에 표시된 대로 도메인 이름 설정을 추가합니다.

27. 도메인 설정 추가를 마친 후 이메일 계정으로 웹메일 클라이언트에 로그인하려면 Ranloop 관리 인터페이스에서 로그아웃하고 브라우저에서 IP 주소를 지정하세요.

Rainloop 웹 메일에 성공적으로 로그인한 후에는 이전에 명령줄에서 받은 편지함 폴더로 보낸 이메일을 볼 수 있습니다.

http://192.168.0.102
User: [email 
Pass: the matie password

27. 새 사용자를 추가하려면 사용자 홈 디렉터리를 생성하기 위해 -m 플래그와 함께 useradd 명령을 실행하세요. 그러나 먼저 다음 명령을 사용하여 모든 사용자에 대해 Maildir 경로 변수를 구성했는지 확인하십시오.

echo 'export MAIL=$HOME/Maildir' >> /etc/profile
useradd -m user3
passwd user3

28. 루트의 모든 이메일을 시스템의 특정 로컬 메일 계정으로 리디렉션하려면 아래 명령을 실행하세요. 루트 계정으로 리디렉션되거나 대상이 되는 모든 메일은 아래 이미지와 같이 메일 사용자에게 전달됩니다.

echo "root: test_mail" >> /etc/aliases
newaliases

그게 다야! 로컬 사용자가 이메일을 통해 통신할 수 있도록 구내에 메일 서버를 성공적으로 설치하고 구성했습니다. 그러나 이러한 유형의 메일 구성은 어떤 방식으로도 보호되지 않으며 사용자가 완전히 제어할 수 있는 시스템 및 네트워크의 소규모 설정에만 배포하는 것이 좋습니다.