분류 기타

iRedMail을 사용하여 Ubuntu 20.04에서 본격적인 메일 서버를 쉽게 설정하는 방법

컨텐츠 정보

  • 조회 1,765 (작성일 )

본문

Linux에서 처음부터 자신의 이메일 서버를 설정하는 것은 길고 지루한 프로세스이며 고급 사용자가 아닌 경우 골칫거리입니다. 

이 튜토리얼은 iRedMail을 사용하여 Ubuntu 20.04에서 모든 기능을 갖춘 메일 서버를 빠르게 설정하여 많은 시간과 골칫거리를 절약하는 방법을 보여줍니다.


iRedMail은 무엇입니까? 


iRedMail은 Linux / BSD 서버에 필요한 모든 메일 서버 구성 요소를 자동으로 설치하고 구성하여 수동 설치 및 구성을 제거하는 쉘 스크립트입니다. iRedMail을 사용하면 웹 기반 관리자 패널에서 무제한 메일 함과 무제한 메일 도메인을 쉽게 생성 할 수 있습니다. 사서함은 MariaDB / MySQL, PostgreSQL 데이터베이스 또는 OpenLDAP에 저장할 수 있습니다. 

다음은 iRedMail에 의해 자동으로 설치되고 구성되는 오픈 소스 소프트웨어 목록입니다.


  • Postfix SMTP server
  • Dovecot IMAP server
  • 관리자 패널 및 웹 메일을 제공하는 Nginx 웹 서버
  • 사용자 정보 저장을 위한 OpenLDAP, MySQL / MariaDB 또는 PostgreSQL
  • DKIM 서명 및 확인을 위한 Amavised-new
  • 스팸 방지를 위한 SpamAssassin
  • 안티 바이러스 용 ClamAV
  • Roundcube 웹 메일
  • 웹 메일, 캘린더 (CalDAV), 연락처 (CardDAV), 작업 및 ActiveSync 서비스를 제공하는 SOGo 그룹웨어.
  • SSH 보호를 위한 Fail2ban
  • mlmmj mailing list manager
  • Netdata server monitoring
  • 그레이 리스팅을 위한 iRedAPD Postfix 정책 서버

1 단계 : 올바른 호스팅 제공 업체 선택 및 도메인 이름 구입 


iRedMail로 완전한 이메일 서버를 설정하려면 최소 2GB RAM이있는 서버가 필요합니다. 설치 후 서버는 1GB 이상의 RAM을 사용하기 때문입니다. 이 튜토리얼은 $26 / 월 ScalaHosting VPS (가상 사설 서버)에서 수행됩니다. ScalaHosting은 포트 25를 차단하지 않으므로 SMTP 릴레이 서비스에 돈을 쓰지 않고도 무제한 이메일 (트랜잭션 이메일 및 뉴스 레터)을 보낼 수 있기 때문에 추천합니다. ScalaHosting에는 SMTP 제한이 없습니다. 하루에 백만 개의 이메일을 보낼 수 있습니다.


DigitalOcean과 같은 다른 VPS 제공 업체는 포트 25를 차단합니다. DigitalOcean은 포트 25를 차단 해제하지 않으므로 차단을 우회 하도록 SMTP 릴레이를 설정해야 하므로 추가 비용이 발생할 수 있습니다. Vultr VPS를 사용하는 경우 포트 25는 기본적으로 차단됩니다. 지원 티켓을 열면 차단을 해제 할 수 있지만 이메일 전송 활동이 허용되지 않는다고 판단되면 언제든지 다시 차단할 수 있습니다. Vultr는 서버를 사용하여 뉴스 레터를 보내는 경우 실제로 다시 차단할 수 있습니다.


ScalaHosting 웹 사이트로 이동하여 계정을 만듭니다. 자체 관리되는 Linux VPS 계획을 선택하십시오. 12 개월 선불 결제를 선택하면 단계 결제 페이지에서 쿠폰 코드 linuxbabe2021을 사용하여 $ 100를 절약 할 수 있습니다.


scalahosting vps email server 

계정을 생성하면 ScalaHosting에서 서버 SSH 로그인 세부 정보가 포함 된 이메일을 보냅니다. 서버에 로그인하려면 SSH 클라이언트를 사용합니다. 컴퓨터에서 Linux 또는 macOS를 사용하는 경우 터미널 창을 열고 다음 명령을 실행하여 서버에 로그인하십시오. 12.34.56.78을 서버의 IP 주소로 바꿉니다.


ssh root@12.34.56.78 -p 6543

암호를 입력하라는 메시지가 표시됩니다. 아래 링크 된 튜토리얼을 따라 ScalaHosting에서 Linux VPS 서버를 올바르게 설정하는 것이 좋습니다.


ScalaHosting에서 Linux VPS 서버를 만드는 방법 


Ubuntu 20.04 시스템을 새로 설치할 때 아래 지침을 따르는 것이 좋습니다. LTS가 아닌 Ubuntu에 iRedMail과 같은 복잡한 서버 소프트웨어를 설치하는 것은 권장되지 않습니다. 9 개월마다 OS를 업그레이드 할 때 문제가 발생할 수 있기 때문입니다. 소프트웨어 작성자는 모든 Ubuntu 릴리스를 지원할 시간이 없습니다. 메일 서버가 2 ~ 5 년 동안 안정적으로 유지되는 것이 훨씬 좋습니다.


도메인 이름도 필요합니다. 가격이 저렴하고 평생 무료로 whois 개인 정보 보호를 제공하기 때문에 NameCheap에서 내 도메인 이름을 등록했습니다.


2 단계 : DNS MX 레코드 생성 


MX 레코드는 특정 도메인 이름에 대한 이메일을 처리하는 호스트를 지정합니다. 예를 들어 linuxbabe.com의 이메일을 처리하는 호스트는 mail.linuxbabe.com입니다. Gmail 계정이 있는 누군가가 somebody@linuxbabe.com으로 이메일을 보내면 Gmail 서버는 linuxbabe.com의 MX 레코드를 쿼리합니다. mail.linuxbabe.com이 이메일 수신을 담당하고 있음을 알게 되면 mail.linuxbabe.com의 A 레코드를 쿼리하여 IP 주소를 가져 오므로 이메일을 전달할 수 있습니다.


DNS 레코드를 생성하려면 DNS 호스팅 서비스 (일반적으로 도메인 등록 기관)로 이동해야 합니다. DNS 관리자에서 도메인 이름에 대한 MX 레코드를 만듭니다. 기본 도메인 이름을 나타내는 이름 필드에 @를 입력 한 다음 값 필드에 mail.your-domain.com을 입력합니다.


iredmail email server create MX record 


참고 : MX 레코드의 호스트 이름은 다른 이름의 별칭이 될 수 없습니다. 또한 MX 레코드에 베어 IP 주소가 아닌 호스트 이름을 사용하는 것이 좋습니다.


DNS 관리자가 기본 설정 값 (일명 우선 순위 값)을 입력하도록 요구할 수 있습니다. 0에서 65,356 사이의 숫자가 될 수 있습니다. 작은 숫자가 큰 숫자보다 우선 순위가 높습니다. 값을 0으로 설정하는 것이 좋습니다. 그러면 이 메일 서버가 이메일 수신에 가장 높은 우선 순위를 갖게 됩니다. MX 레코드를 만든 후 mail.your-domain.com에 대한 A 레코드도 만들어야 IP 주소로 확인할 수 있습니다. 서버에서 IPv6 주소를 사용하는 경우 AAAA 레코드를 추가해야 합니다.


힌트 : Cloudflare DNS 서비스를 사용하는 경우 mail.your-domain.com에 대한 A 레코드를 만들 때 CDN 기능을 활성화하면 안됩니다. Cloudflare는 SMTP 프록시를 지원하지 않습니다.


3 단계 : 호스트 이름 구성 


SSH를 통해 서버에 로그인 한 후 다음 명령을 실행하여 기존 소프트웨어 패키지를 업데이트하십시오.


sudo apt update

sudo apt upgrade -y

업그레이드 과정에서 다음과 같은 질문을 할 수 있습니다. SSH에 포트 6543을 계속 사용하려면 현재 설치된 로컬 버전 유지를 선택하십시오. SSH에 포트 22를 사용하려면 패키지 관리자 버전 설치를 선택하십시오.


scalahosting configure openssh server 


기본 루트 사용자를 사용하는 것보다 서버 관리를 위해 sudo 사용자를 만드는 것이 좋습니다. 다음 명령을 실행하여 사용자를 만듭니다. username을 선호하는 사용자 이름으로 바꿉니다.


adduser username

adduser scalahosting 


그런 다음 사용자를 sudo 그룹에 추가하십시오.


adduser username sudo

새 사용자로 전환하십시오.


su - username

다음으로 다음 명령을 사용하여 서버의 FQDN (정규화 된 도메인 이름)을 설정합니다.


sudo hostnamectl set-hostname mail.your-domain.com

또한 Nano와 같은 명령 줄 텍스트 편집기로 / etc / hosts 파일을 업데이트해야 합니다.


sudo nano /etc/hosts

아래와 같이 편집하십시오. (화살표 키를 사용하여 파일에서 커서를 이동합니다.)


127.0.0.1       mail.your-domain.com localhost

파일을 저장하고 닫습니다. (Nano 텍스트 편집기에서 파일을 저장하려면 Ctrl + O를 누른 다음 Enter를 눌러 확인합니다. 파일을 닫으려면 Ctrl + X를 누릅니다.)


변경 사항을 확인하려면 다시 로그인 한 후 다음 명령을 실행하여 호스트 이름을 확인하십시오.


hostname -f

4 단계 : iRedMail을 사용하여 Ubuntu 20.04에서 메일 서버 설정 


다음 명령을 실행하여 Github 저장소에서 최신 버전의 iRedMail 스크립트 설치 프로그램을 다운로드합니다.


wget https://github.com/iredmail/iRedMail/archive/1.3.2.tar.gz

아카이브 된 파일을 추출하십시오.


tar xvf 1.3.2.tar.gz

그런 다음 새로 생성 된 디렉토리로 이동합니다.

cd iRedMail-1.3.2/

iRedMail.sh 스크립트에 실행 권한을 추가합니다.


chmod +x iRedMail.sh

다음으로 sudo 권한으로 Bash 스크립트를 실행하십시오.

sudo bash iRedMail.sh

메일 서버 설정 마법사가 나타납니다. Tab 키를 사용하여 예를 선택하고 Enter를 누르십시오.


ubuntu-20.04-iredmail-server 


다음 화면에서 메일 저장 경로를 선택하라는 메시지가 표시됩니다. 기본 경로 인 / var / vmail을 사용할 수 있으므로 Enter를 누르기 만하면 됩니다.


iredmail-server-default-storage-path 


그런 다음 웹 서버를 실행할지 여부를 선택하십시오. 이메일 계정을 추가하려면 웹 기반 관리자 패널이 필요하므로 웹 서버를 실행하는 것이 좋습니다. 또한 Roundcube 웹 메일에 액세스 할 수 있습니다. 기본적으로 Nginx 웹 서버가 선택되어 있으므로 Enter를 누르기 만하면 됩니다. (별표는 항목이 선택되었음을 나타냅니다.)


iredmail-nginx-web-server 

그런 다음 이메일 계정 용 스토리지 백엔드를 선택합니다. 익숙한 것을 선택하십시오. 이 자습서에서는 MariaDB를 선택했습니다. 위쪽 및 아래쪽 화살표 키를 누르고 스페이스 바를 눌러 선택합니다.


ubuntu-20.04-email-server 


MariaDB 또는 MySQL을 선택한 경우 MySQL 루트 암호를 설정해야 합니다.


ubuntu-20.04-mail-server 


다음으로 첫 번째 메일 도메인을 입력합니다. 나중에 웹 기반 관리자 패널에서 추가 메일 도메인을 추가 할 수 있습니다. 이 가이드에서는 john.doe@your-domain.com과 같은 이메일 계정이 필요하다고 가정합니다. 이 경우 여기에 하위 도메인 없이 your-domain.com을 입력해야 합니다. 도메인 이름 뒤의 스페이스 바를 누르지 마십시오. iRedMail이 도메인 이름과 함께 공백 문자를 복사하여 설치에 실패 할 수 있다고 생각합니다.


set-up-mail-server-on-ubuntu-20.04 


다음으로 메일 도메인 관리자의 비밀번호를 설정합니다.


ubuntu-20.04-email-server-step-by-step 


선택적 구성 요소를 선택하십시오. 기본적으로 4 개의 항목이 선택됩니다. SOGo 그룹웨어 (웹 메일, 캘린더, 주소록, ActiveSync)를 사용하려면 아래쪽 화살표 키와 스페이스 바를 눌러 선택합니다. 다음 화면으로 이동하려면 Enter를 누르십시오.


iredmail-optional-components-sogo-groupware 


이제 구성을 검토 할 수 있습니다. 모든 메일 서버 구성 요소의 설치를 시작하려면 Y를 입력합니다.


ubuntu iredmail config review 


설치가 끝나면 y를 선택하여 iRedMail에서 제공하는 방화벽 규칙을 사용하고 방화벽을 다시 시작하십시오.


iredmail-firewall-rules-fail2ban 


이제 iRedMail 설치가 완료되었습니다. 웹 메일의 URL, 웹 관리자 패널 및 로그인 자격 증명을 받게 됩니다. iRedMail.tips 파일에는 iRedMail 서버에 대한 중요한 정보가 포함되어 있습니다.


iredmail-full-featured-mail-server-setup-complete 


Ubuntu 20.04 서버를 재부팅하십시오.


sudo shutdown -r now

서버가 다시 온라인 상태가 되면 웹 관리자 패널을 방문 할 수 있습니다.


https://mail.your-domain.com/iredadmin/

위의 URL에서 관리자 패널에 액세스하기 위한 하위 디렉토리는 / iredmail /이 아니라 / iredadmin /입니다. 자체 서명 된 TLS 인증서를 사용하기 때문에 웹 브라우저에 보안 예외를 추가해야 합니다.


5 단계 : Let ’s Encrypt TLS 인증서 설치 


메일 서버가 자체 서명 된 TLS 인증서를 사용하고 있으므로 데스크탑 메일 클라이언트 사용자와 웹 메일 클라이언트 사용자 모두 경고가 표시됩니다. 이 문제를 해결하기 위해 무료 Let ’s Encrypt TLS 인증서를 받아 설치할 수 있습니다.


인증서 얻기 


먼저 SSH를 통해 서버에 다시 로그인하고 다음 명령을 실행하여 Ubuntu 20.04에 Let ’s Encrypt (certbot) 클라이언트를 설치합니다.


sudo apt install certbot

iRedMail은 이미 기본 Nginx 가상 호스트에 TLS 설정을 구성 했으므로 여기서는 인증서를 얻기 위해 nginx 플러그인 대신 webroot 플러그인을 사용하는 것이 좋습니다. 다음 명령을 실행하십시오. 빨간색 텍스트를 실제 데이터로 바꿉니다.


sudo certbot certonly --webroot --agree-tos --email you@example.com -d mail.your-domain.com -w /var/www/html/

EFF에서 통신을 받을 것인지 묻는 메시지가 표시되면 아니요를 선택할 수 있습니다.


iredmail letsencrypt 


모든 것이 잘되면 TLS 인증서를 성공적으로 획득했음을 나타내는 다음 텍스트가 표시됩니다. 인증서와 체인은 /etc/letsencrypt/live/mail.your-domain.com/ 디렉토리에 저장되었습니다.


iredmail certbot 


TLS 인증서 획득 실패 


certbot이 TLS 인증서를 얻지 못한 경우 DNS 레코드가 인터넷에 전파되지 않았기 때문일 수 있습니다. 사용하는 도메인 등록 기관에 따라 DNS 레코드가 즉시 전파되거나 전파되는 데 최대 24 시간이 걸릴 수 있습니다. https://dnsmap.io/로 이동하여 메일 서버의 호스트 이름 (mail.your-domain.com)을 입력하여 DNS 전파를 확인할 수 있습니다.


certbot이 인증서를 얻지 못하고 다음 메시지가 표시되면


Failed authorization procedure. mail.linuxbabe.com (http-01): urn:ietf:params:acme:error:connection :: The server could not connect to the client to verify the domain :: Fetching https://mail.linuxbabe.com/.well-known/acme-challenge/IZ7hMmRE4ZlGW7cXYoq2Lc_VrFzVFyfW6E0pzNlhiOA: Timeout during connect (likely firewall problem)

mail.your-domain.com에 대해 AAAA 레코드를 설정했지만 Nginx 웹 서버가 IPv6 주소에서 수신하지 않기 때문일 수 있습니다. 이 오류를 수정하려면 /etc/nginx/sites-enabled/00-default.conf 파일을 편집하십시오.


sudo nano /etc/nginx/sites-enabled/00-default.conf

다음 줄을 찾으십시오.


#listen [::]:80;

이 Nginx 가상 호스트에 대해 IPv6를 활성화하려면 # 문자를 제거하십시오.


listen [::]:80;

파일을 저장하고 닫습니다. 그런 다음 SSL 가상 호스트 /etc/nginx/sites-enabled/00-default-ssl.conf를 편집합니다.


sudo nano /etc/nginx/sites-enabled/00-default-ssl.conf

다음 줄을 추가하십시오.


listen [::]:443 ssl http2;

iredmail certbot renew 


파일을 저장하고 닫습니다. 그런 다음 Nginx 구성을 테스트합니다.


sudo nginx -t

테스트가 성공하면 Nginx를 다시 로드하여 변경 사항을 적용합니다.


sudo systemctl reload nginx

다음 명령을 다시 실행하여 TLS 인증서를 얻습니다. 빨간색 텍스트를 실제 데이터로 바꿉니다.


sudo certbot certonly --webroot --agree-tos --email you@example.com -d mail.your-domain.com -w /var/www/html/

이제 TLS 인증서를 성공적으로 얻을 수 있습니다.


Nginx에 인증서 설치 


TLS 인증서를 받은 후 이를 사용하도록 Nginx 웹 서버를 구성 해 보겠습니다. SSL 템플릿 파일을 편집합니다.


sudo nano /etc/nginx/templates/ssl.tmpl

다음 두 줄을 찾습니다.

ssl_certificate /etc/ssl/certs/iRedMail.crt;
ssl_certificate_key /etc/ssl/private/iRedMail.key;

다음으로 교체하십시오.


ssl_certificate /etc/letsencrypt/live/mail.your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mail.your-domain.com/privkey.pem;

파일을 저장하고 닫습니다. 그런 다음 nginx 구성을 테스트하고 다시 로드합니다.


sudo nginx -t

sudo systemctl reload nginx

iRedMail 관리자 패널을 다시 방문하면 Nginx가 이제 유효한 TLS 인증서를 사용하고 있기 때문에 웹 브라우저에서 더 이상 경고하지 않습니다.


iredadmin 


Postfix 및 Dovecot에 TLS 인증서 설치 


또한 데스크톱 메일 클라이언트가 보안 경고를 표시하지 않도록 Let ’s Encrypt 발급 인증서를 사용하도록 Postfix SMTP 서버와 Dovecot IMAP 서버를 구성해야 합니다. Postfix의 기본 구성 파일을 편집하십시오.

sudo nano /etc/postfix/main.cf

다음 세 줄을 찾으십시오. (라인 95, 96, 97).


smtpd_tls_key_file = /etc/ssl/private/iRedMail.key
smtpd_tls_cert_file = /etc/ssl/certs/iRedMail.crt
smtpd_tls_CAfile = /etc/ssl/certs/iRedMail.crt

다음으로 교체하십시오.


smtpd_tls_key_file = /etc/letsencrypt/live/mail.your-domain.com/privkey.pem
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.your-domain.com/cert.pem
smtpd_tls_CAfile = /etc/letsencrypt/live/mail.your-domain.com/chain.pem

파일을 저장하고 닫습니다. 그런 다음 Postfix를 다시 로드 하십시오.

sudo systemctl reload postfix

다음으로 Dovecot의 기본 구성 파일을 편집합니다.


sudo nano /etc/dovecot/dovecot.conf

다음 두 줄을 미세 조정하십시오. (47, 48 행)


ssl_cert = </etc/ssl/certs/iRedMail.crt
ssl_key = </etc/ssl/private/iRedMail.key

다음으로 교체하십시오.


ssl_cert = </etc/letsencrypt/live/mail.your-domain.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.your-domain.com/privkey.pem

파일을 저장하고 닫습니다. 그런 다음 dovecot을 다시 장전하십시오.


sudo systemctl reload dovecot

이제부터 데스크톱 메일 사용자에게는 보안 경고가 표시되지 않습니다.


6 단계 : 테스트 이메일 보내기 


포스트 마스터 메일 계정 (postmaster@your-domain.com)으로 iredadmin 패널에 로그인합니다. 추가 탭에서 추가 도메인 또는 이메일 주소를 추가 할 수 있습니다.


add email addresses in iredadmin 


"제어 중인 도메인 없음"오류가 표시되면 이 문서를 참조하십시오.


사용자를 생성 한 후 Roundcube 웹 메일 주소를 방문하여 새 메일 사용자 계정으로 로그인 할 수 있습니다.


https://mail.your-domain.com/mail/

iredmail roundcube webmail 


이제 이메일 송수신을 테스트 할 수 있습니다. iRedMail은 기본적으로 그레이 리스팅을 활성화하므로 이메일을 수신하려면 몇 분 정도 기다려야 할 수 있습니다. 이는 다른 전송 SMTP 서버에 몇 분 후에 다시 시도하도록 지시하는 방법입니다. 메일 로그 파일 /var/log/mail.log의 다음 줄은 그레이 리스팅이 활성화되었음을 나타냅니다.


Recipient address rejected: Intentional policy rejection, please try again later;

스왑 공간 추가 


ClamAV는 이메일 메시지에서 바이러스를 검사하는 데 사용됩니다. ClamAV는 상당한 양의 RAM을 사용할 수 있습니다. 서버에 RAM이 충분하지 않으면 ClamAV가 제대로 작동하지 않아 메일 서버에서 이메일을 보낼 수 없습니다. 서버에 스왑 파일을 추가하여 서버의 총 RAM을 늘릴 수 있습니다. (서버에서 스왑 공간을 사용하면 서버 성능이 저하됩니다. 성능을 향상 시키려면 스왑 공간을 사용하는 대신 물리적 RAM을 업그레이드해야합니다.)


서버에 스왑 공간을 추가하려면 먼저 fallocate 명령을 사용하여 파일을 만듭니다. 예를 들어 루트 파일 시스템에서 용량이 1G 인 swapfile이라는 파일을 만듭니다.


sudo fallocate -l 1G /swapfile

그런 다음 루트 만 읽고 쓸 수 있는지 확인하십시오.


sudo chmod 600 /swapfile

스왑하려면 포맷하십시오.


sudo mkswap /swapfile

Output:


Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=0aab5886-4dfb-40d4-920d-fb1115c67433

스왑 파일 활성화


sudo swapon /swapfile

시스템 부팅시 스왑 공간을 마운트하려면 / etc / fstab 파일을 편집하십시오.


sudo nano /etc/fstab

이 파일의 맨 아래에 다음 행을 추가하십시오.

/swapfile    swap    swap     defaults    0   0

파일을 저장하고 닫습니다. 그런 다음 systemd를 다시 로드하고 ClamAV를 다시 시작합니다.


sudo systemctl daemon-reload

sudo systemctl restart clamav-daemon

7 단계 : 포트 25 (아웃 바운드)가 차단되었는지 확인 


ISP 또는 호스팅 제공 업체는 서버의 25 번 포트로 들어오는 연결을 차단하지 않으므로 다른 메일 서버에서 이메일을 받을 수 있습니다. 그러나 많은 ISP / 호스팅 제공 업체가 다른 메일 서버의 포트 25로 나가는 연결을 차단하므로 이메일을 보낼 수 없습니다.


이메일이 Gmail과 같은 다른 이메일 주소에 도착하지 않은 경우 메일 서버에서 다음 명령을 실행하여 포트 25 (발신)가 차단되었는지 확인합니다.

telnet gmail-smtp-in.l.google.com 25

차단되지 않은 경우 연결이 성공적으로 설정되었음을 나타내는 아래와 같은 메시지가 표시됩니다. (힌트 : quit를 입력하고 Enter를 눌러 연결을 종료하십시오.)

Trying 74.125.68.26...
Connected to gmail-smtp-in.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP y22si1641751pll.208 - gsmtp

포트 25 (아웃 바운드)가 차단되면 다음과 같은 내용이 표시됩니다.


Trying 2607:f8b0:400e:c06::1a...
Trying 74.125.195.27...
telnet: Unable to connect to remote host: Connection timed out

이 경우 Postfix는 다른 SMTP 서버로 이메일을 보낼 수 없습니다. ISP / 호스팅 제공 업체에 문의하십시오. 요청을 거부하는 경우 포트 25 차단을 우회 하도록 SMTP 릴레이를 설정해야 합니다.


여전히 이메일을 보낼 수 없습니까? 


포트 25 (발신)가 차단되지 않았지만 여전히 자신의 메일 서버에서 Gmail과 같은 다른 이메일 주소로 이메일을 보낼 수 없는 경우 메일 로그 (/var/log/mail.log)를 확인해야 합니다.


sudo nano /var/log/mail.log

예를 들어, 일부 사람들은 파일에서 다음 줄을 볼 수 있습니다.


host gmail-smtp-in.l.google.com[2404:6800:4003:c03::1b] said: 550-5.7.1 [2a0d:7c40:3000:b8b::2] Our system has detected that 550-5.7.1 this message does not meet IPv6 sending guidelines regarding PTR 550-5.7.1 records and authentication. Please review 550-5.7.1 https://support.google.com/mail/?p=IPv6AuthError for more information

즉, 메일 서버에서 IPv6를 사용하여 이메일을 보내고 있지만 사용자가 IPv6 레코드를 설정하지 않았습니다. DNS 관리자로 이동하여 mail.your-domain.com에 대한 AAAA 레코드를 설정 한 다음 9 단계에서 설명하는 IPv6 주소에 대한 PTR 레코드를 설정해야 합니다.


8 단계 : 컴퓨터 또는 모바일 장치에서 메일 클라이언트 사용 


Mozilla Thunderbird와 같은 데스크탑 이메일 클라이언트를 실행하고 메일 계정을 추가하십시오.


  • 받는 서버 섹션에서 IMAP 프로토콜을 선택하고 서버 이름으로 mail.your-domain.com을 입력하고 포트 143 및 STARTTLS를 선택합니다. 인증 방법으로 일반 비밀번호를 선택하십시오.
  • 발신 섹션에서 SMTP 프로토콜을 선택하고 서버 이름으로 mail.your-domain.com을 입력하고 포트 587 및 STARTTLS를 선택합니다. 인증 방법으로 일반 비밀번호를 선택하십시오.

ubuntu postfix dovecot letsencrypt https 


자신의 IP 주소를 차단하는 Fail2ban 


실수로 메일 서버에 여러 번 로그인하지 못한 경우 메일 서버의 Fail2ban 서비스가 IP 주소를 차단할 수 있습니다. jail.local 파일을 편집하여 화이트리스트에 IP 주소를 추가 할 수 있습니다.


sudo nano /etc/fail2ban/jail.local

아래와 같이 무시 목록에 자신의 IP 주소를 추가합니다. 12.34.56.78을 실제 IP 주소로 바꿉니다.


ignoreip = 12.34.56.78 127.0.0.1 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16

파일을 저장하고 닫습니다. 그런 다음 Fail2ban을 다시 시작하십시오.


sudo systemctl restart fail2ban

9 단계 : 이메일 전달성 향상 


이메일이 스팸으로 표시되지 않도록하려면 PTR, SPF, DKIM 및 DMARC 레코드를 설정해야합니다.


PTR record 


포인터 레코드 또는 PTR 레코드는 IP 주소를 FQDN (정규화 된 도메인 이름)에 매핑합니다. A 레코드에 대응하며 역방향 DNS 조회에 사용되며 스팸 발송자를 차단하는 데 도움이 될 수 있습니다. 많은 SMTP 서버는 보내는 서버에 대한 PTR 레코드가 없으면 이메일을 거부합니다.


PTR 레코드에서 IP 주소를 확인하려면 다음 명령을 실행하십시오.


dig -x IP-address +short

또는


host IP-address

PTR 레코드는 도메인 등록 기관에서 관리하지 않습니다. IP 주소를 제공하는 조직에서 관리합니다. 도메인 등록 기관이 아니라 호스팅 공급자 또는 ISP로부터 IP 주소를 얻으므로 호스팅 공급자의 제어판에서 IP에 대한 PTR 레코드를 설정하거나 ISP에 문의해야 합니다. 값은 메일 서버의 호스트 이름 (mail.your-domain.com)이어야 합니다. 서버에서 IPv6 주소를 사용하는 경우 IPv6 주소에 대한 PTR 레코드도 추가해야 합니다.


ScalaHosting VPS에 대한 역방향 DNS 레코드를 편집하려면 ScalaHosting 클라이언트 영역에 로그인 한 다음 오른쪽 하단의 라이브 채팅을 사용하여 지원 팀에 서버 IP 주소의 PTR 레코드를 mail.your-domain으로 업데이트하도록 지시하십시오. com.


SPF Record 


SPF (Sender Policy Framework) 레코드는 도메인을 대신하여 이메일을 보낼 수 있는 호스트 또는 IP 주소를 지정합니다. 자신의 이메일 서버 또는 ISP의 서버 만 도메인에 대한 이메일을 보내도록 허용해야 합니다. DNS 관리 인터페이스에서 아래와 같이 새 TXT 레코드를 만듭니다.


modoboa spf record 

설명:


  • TXT는 이것이 TXT 레코드임을 나타냅니다.
  • 이름 필드에 @를 입력하여 기본 도메인 이름을 나타냅니다.
  • v = spf1은 이것이 SPF 레코드이고 버전이 SPF1임을 나타냅니다.
  • mx는 MX 레코드에 나열된 모든 호스트가 도메인에 대한 이메일을 보낼 수 있고 다른 모든 호스트는 허용되지 않음을 의미합니다.
  • ~ all은 도메인의 이메일이 SPF 레코드에 지정된 호스트에서만 발송되어야 함을 나타냅니다. 다른 호스트에서 보낸 이메일은 위조 된 것으로 표시됩니다.

SPF 레코드가 공용 인터넷에 전파되었는지 확인하려면 다음과 같이 Linux 시스템에서 dig 유틸리티를 사용할 수 있습니다.

dig your-domain.com txt

txt 옵션은 dig에게 TXT 레코드 만 쿼리하도록 지정합니다.


DKIM Record 


DKIM (DomainKeys Identified Mail)은 개인 키를 사용하여 도메인에서 보낸 이메일에 디지털 서명을 합니다. 수신 SMTP 서버는 DNS DKIM 레코드에 게시 된 공개 키를 사용하여 서명을 확인합니다.


iRedMail 스크립트는 서버에 대해 자동으로 DKIM을 구성했습니다. 남은 유일한 일은 DNS 관리자에서 DKIM 레코드를 만드는 것입니다. 다음 명령을 실행하여 DKIM 공개 키를 표시합니다.

sudo amavisd-new showkeys

DKIM 공개 키는 괄호 안에 있습니다.


iredmail amavis dkim 


그런 다음 DNS 관리자에서 TXT 레코드를 만들고 이름 필드에 dkim._domainkey를 입력합니다. 괄호 안의 모든 내용을 복사하여 값 필드에 붙여 넣습니다. 큰 따옴표와 줄 바꿈을 모두 삭제하십시오.


amavisd-new ubuntu 

변경 사항을 저장 한 후 다음 명령을 실행하여 DKIM 레코드가 올바른지 테스트합니다.


sudo amavisd-new testkeys

DKIM 레코드가 정확하면 테스트에 합격합니다.

TESTING#1 linuxbabe.com: dkim._domainkey.linuxbabe.com => pass

DKIM 레코드가 인터넷에 전파 되려면 언젠가 필요할 수 있습니다. 사용하는 도메인 등록 기관에 따라 DNS 레코드가 즉시 전파되거나 전파되는 데 최대 24 시간이 걸릴 수 있습니다. https://www.dmarcanalyzer.com/dkim/dkim-check/로 이동하여 선택기로 dkim을 입력하고 도메인 이름을 입력하여 DKIM 레코드 전파를 확인할 수 있습니다.


DMARC Record 


DMARC는 도메인 기반 메시지 인증,보고 및 적합성을 나타냅니다. DMARC는 이메일 서버를 수신하여 합법적 인 이메일을 식별하고 이메일 스푸핑에서 도메인 이름이 사용되는 것을 방지 할 수 있습니다.


DMARC 레코드를 만들려면 DNS 관리자로 이동하여 TXT 레코드를 추가하세요. 이름 필드에 _dmarc를 입력합니다. 값 필드에 다음을 입력하십시오. (dmarc@your-domain.com 이메일 주소를 만들어야 합니다.)

v=DMARC1; p=none; pct=100; rua=mailto:dmarc@your-domain.com

create dmarc record txt 

위의 DMARC 레코드는 안전한 시작점입니다. DMARC에 대한 전체 설명을 읽으려면 다음 도움말을 확인하세요. 이것은 선택 사항입니다.


이메일 스푸핑으로부터 도메인 이름을 보호하기 위해 DMARC 레코드 생성


10 단계 : 이메일 점수 및 배치 테스트 


PTR, SPF, DKIM 레코드를 생성 한 후 https://www.mail-tester.com으로 이동합니다. 고유 한 이메일 주소가 표시됩니다. 도메인에서 이 주소로 이메일을 보낸 다음 점수를 확인하세요. 보시다시피 만점을 받았습니다. 테스트 결과에서 PTR 레코드, SPF 및 DKIM 레코드가 유효한지 확인해야 합니다.


Testing Email Score and Placement 


Mail-tester.com은 보낸 사람 점수 만 표시 할 수 있습니다. 이메일이 수신자의 받은 편지함이나 스팸 폴더에 있는지 또는 완전히 거부되었는지 확인할 수 있는 GlockApps라는 또 다른 서비스가 있습니다. Gmail, Outlook, Hotmail, YahooMail, iCloud 메일 등과 같은 많은 인기 있는 이메일 제공 업체를 지원합니다.


glockapps-email-placement-test-scalahosting-vps 


이메일이 여전히 스팸으로 표시되면 어떻게 합니까? 


이 기사에 더 많은 팁이 있습니다. 이메일이 스팸으로 표시되는 것을 막는 방법. 약간의 시간과 노력이 필요하지만 이러한 팁을 적용하면 결국 이메일이 받은 편지함에 저장됩니다.


Microsoft Mailbox에서 전자 메일을 거부하면 어떻게 됩니까? 


Microsoft는 많은 합법적 인 IP 주소를 차단하는 내부 블랙리스트를 사용하는 것 같습니다. Outlook 또는 Hotmail에서 이메일이 거부 된 경우 발신자 정보 양식을 제출해야 합니다. 그 후, 귀하의 이메일은 Outlook / Hotmail에서 수락됩니다.


여러 메일 도메인 추가 


iRedMail에서 여러 메일 도메인을 추가하는 방법을 보여주기 위해 이 기사를 작성했습니다.


그레이 리스팅을 비활성화하는 방법 


기본적으로 iRedMail은 그레이 리스팅을 활성화하여 다른 송신 SMTP 서버에 몇 분 후에 다시 시도하도록 지시합니다. 이는 주로 스팸을 차단하는 데 유용하지만 사용자 경험을 저하시킵니다. 그레이 리스팅을 비활성화 하려면 아래 지침을 따르십시오.


/opt/iredapd/settings.py 파일에 쓰기 권한을 추가하십시오.


sudo chmod 600 /opt/iredapd/settings.py

그런 다음 구성 파일을 편집하십시오.

sudo nano /opt/iredapd/settings.py

다음 줄을 찾으십시오.

plugins = ["reject_null_sender", "wblist_rdns", "reject_sender_login_mismatch", "greylisting", "throttle", "amavisd_wblist", "sql_alias_access_policy"]

목록에서 "그레이 리스팅"을 제거합니다. 파일을 저장하고 닫습니다. 그런 다음 iredapd를 다시 시작하십시오.


sudo systemctl restart iredapd

구성 파일을 다시 읽기 전용 모드로 변경하십시오.

sudo chmod 400 /opt/iredapd/settings.py

SMTPS 포트 465 활성화 


Microsoft Outlook 클라이언트를 사용하려는 경우 Postfix SMTP 서버에서 SMTPS 포트 465를 활성화해야 합니다.


Troubleshooting 


먼저 최소 2GB RAM의 VPS를 사용하십시오. 1GB RAM VPS에서 iRedMail을 실행하면 메모리 부족 문제로 인해 데이터베이스, SpamAssassin 또는 ClamAV가 종료됩니다. 정말로 1GB RAM VPS를 사용하려는 경우 수신 이메일을 잃고 다른 바람직하지 않은 결과가 발생할 수 있습니다.


502 게이트웨이 오류와 같이 iRedMail 웹 인터페이스에 액세스 할 수없는 경우 / var / log / nginx / 디렉토리의 Nginx 로그를 확인하여 단서를 찾아야합니다. 메일 로그 /var/log/mail.log를 확인할 수도 있습니다.


다양한 서비스가 실행 중인지 확인하십시오.

systemctl status postfix

systemctl status dovecot

systemctl status nginx

systemctl status mariadb

systemctl status clamav-daemon

systemctl status amavis

방화벽을 활성화 한 경우 방화벽에서 다음 포트를 열어야 합니다.

HTTP port:  80
HTTPS port: 443
SMTP port:  25
Submission port: 587 (and 465 if you are going to use Microsoft Outlook mail client)
IMAP port:  143 and 993

UFW 방화벽을 사용하려면 여기에서 내 가이드를 확인하십시오 : Debian 및 Ubuntu에서 UFW 방화벽 시작하기.


TLS 인증서 갱신 방법 


Let ’s Encrypt에서 발급 한 TLS 인증서는 90 일 동안 만 유효하며 인증서를 자동으로 갱신하도록 Cron 작업을 설정하는 것이 중요합니다. 다음 명령을 실행하여 인증서를 갱신 할 수 있습니다.

sudo certbot renew -w /var/www/html/


--dry-run 옵션을 사용하여 실제 갱신을 수행하는 대신 갱신 프로세스를 테스트 할 수 있습니다.


sudo certbot renew -w /var/www/html/ --dry-run

TLS 인증서를 갱신 할 때 다음 오류가 표시되는 경우.

The client lacks sufficient authorization :: Invalid response

그런 다음 숨겨진 디렉터리를 만들어야 합니다.

sudo mkdir -p /var/www/html/.well-known/acme-challenge

그리고 www-data를 webroot의 소유자로 설정하십시오.


sudo chown www-data:www-data /var/www/html/ -R

또한 SSL 가상 호스트 /etc/nginx/sites-enabled/00-default-ssl.conf를 편집합니다. 다음 행을 추가하십시오.


location ~ /.well-known/acme-challenge {
     root /var/www/html/;
     allow all;
}

iredmail letsencrypt renew 


파일을 저장하고 닫습니다. Nginx 구성을 테스트하고 다시 로드합니다.

sudo nginx -t
sudo systemctl reload nginx

크론 작업 생성 


이제 테스트 실행이 성공하면 Cron 작업을 만들어 인증서를 자동으로 갱신 할 수 있습니다. 루트 사용자의 crontab 파일을 열기 만하면 됩니다.

sudo crontab -e

그런 다음 파일 하단에 다음 줄을 추가합니다.

@daily certbot renew -w /var/www/html/ --quiet && systemctl reload postfix dovecot nginx

Postfix, Dovecot 및 Nginx를 다시 로드하면 이러한 프로그램이 새 인증서와 개인 키를 선택하게 됩니다.


백업 메일 서버 설정 


기본 메일 서버가 때때로 다운 될 수 있습니다. 데이터 센터에서 메일 서버를 호스팅 하는 경우 다운 타임이 매우 적으므로 수신 이메일 손실에 대해 걱정할 필요가 없습니다. 집에서 메일 서버를 호스팅 하는 경우 다운 타임을 예측할 수 없으므로 수신 이메일 손실을 방지하기 위해 데이터 센터에서 백업 메일 서버를 실행하는 것이 좋습니다. 백업 메일 서버를 실행하려면 512MB RAM 만 필요합니다. 다음 기사에서 자세한 내용을 확인하십시오.


Ubuntu에서 Postfix를 사용하여 백업 이메일 서버를 설정하는 방법 (전체 가이드)


고급 사용자 용 


iRedMail에는 DMARC 확인 서비스가 포함되어 있지 않습니다. 다음 자습서를 확인하여 이메일 스푸핑을 차단하도록 OpenDMARC를 설정할 수 있습니다.


이메일 스푸핑 / 스팸을 차단하기 위해 Ubuntu에서 Postfix로 OpenDMARC 설정


스팸을 더 잘 감지하기 위해 SpamAssassin 콘텐츠 필터를 사용자 정의 할 수 있습니다.


Postfix / SpamAssassin에서 헤더 및 본문을 확인하여 이메일 스팸 차단


웹 사이트와 메일 서버가 서로 다른 두 VPS (가상 사설 서버)에서 실행 중인 경우 웹 사이트와 메일 서버간에 SMTP 릴레이를 설정하여 웹 사이트에서 메일 서버를 통해 이메일을 보낼 수 있습니다. 다음 기사를 참조하십시오.


Ubuntu에서 2 개의 Postfix SMTP 서버간에 SMTP 릴레이를 설정하는 방법


마무리 


이 튜토리얼이 iRedMail을 사용하여 Ubuntu 20.04에서 메일 서버를 설정하는 데 도움이 되었기를 바랍니다. 


https://www.linuxbabe.com/mail-server/ubuntu-20-04-iredmail-server-installation