우리 웹사이트용 도메인과 외부 호스팅 이메일이 있습니다. (우리는 직접 호스팅할 수 있을 만큼 안정적인 연결을 가지고 있지 않습니다.)
공유 호스팅에는 때때로 SMTP 문제가 있지만 POP 문제는 없습니다.
인터넷이 다운되거나 공유 호스트의 SMTP 서버가 다운된 경우에도 CentOS 6.4에서 내부적으로 작동하는 이메일 서버를 설정할 수 있습니까(예: 웹 도메인 이름이 웹 사이트와 다르게 지정되어 있더라도 도메인의 이메일 주소 간에 전송) 다운되었지만 공유 호스트의 SMTP를 사용하여 외부 주소로 전송하고 예를 들어 집에 있거나 이동 중일 때 공유 호스트에서 POP 메일을 검색할 수 있습니까?
답변1
이 문제에 대한 가능한 해결책은 여러 가지가 있으며 모두 상당히 복잡합니다. 이것은 제가 생각할 수 있는 가장 투명한 구성이지만, 솔직히 말해서 SMTP 서비스가 신뢰할 수 없다면 호스트를 전환하겠습니다. 저렴하고 좋은 이메일 서비스 제공업체가 많이 있습니다. 또한 POP3 대신 IMAP을 사용하는 것이 좋습니다. 이렇게 하면 이러한 설정에서 발생할 수 있는 동기화 문제를 완화할 수 있습니다.
MTA(메시지 전송 에이전트)와 MDA(메시지 전달 에이전트) 간의 필수 결합으로 인해 솔루션이 복잡해졌습니다. 이메일이 POP3 서버(MDA)에 존재하려면 신뢰할 수 없는 SMTP 서버(MTA)를 통해 전달되어야 합니다. MTA는 원격 MDA에 메시지를 저장할 수 없으며 원격 MTA는 MDA에 메시지를 보낼 수 없습니다. 완전한 양방향 메시지 동기화가 없으면 사무실에서 보낸 내부 회사 이메일("도메인의 이메일 주소 간에 전송" 섹션)은 로컬 MDA에만 저장됩니다. 즉, 사무실에 근무하지 않는 사용자는 호스팅된 POP3 계정을 확인할 때 내부 이메일을 받을 수 없습니다.
최소한 다음이 필요합니다.
- SMTP MTA -관광 가이드이는 CentOS의 기본 설정이며 좋은 선택입니다.
- 방화벽(IP/포트 리디렉션용) - netfilter 또는리네트작동할 것이다
- POP3/IMAP 계정용 MDA 및 프록시 -몹시 괴롭히다아마도 최고일 겁니다. Courier에는 이 기능이 있습니다.
백업 SMTP용 로컬 MTA
Courier가 모든 메일을 해당 서버로 전달하도록 하려면 메일 호스트의 SMTP 서버(원격 MTA)를 /etc/courier/esmtproutes
(또는 CentOS에서 이 파일이 설치된 위치) 추가하세요. 호스트의 SMTP가 다운되면 로컬 MTA는 아웃바운드 메일을 대기열에 추가하고 구성 가능한 간격으로 원격 MTA로 전달을 다시 시도합니다.
포트 리디렉션
포트 25의 모든 아웃바운드 트래픽을 로컬 MTA로 전달하도록 방화벽을 구성합니다.
위에서 설명한 가장 간단한 구성만 구현할 수 있습니다. 내부 이메일이 정상적으로 계속되는 것을 허용하지 않지만 원격 MTA 가동 중지 시간을 덜 눈에 띄게 만듭니다.
호스트된 도메인이 있는 로컬 MTA
회사 도메인을 Courier(로컬 MTA)용 호스트 도메인으로 추가하세요 /etc/courier/hosteddomains
. 그러면 스마트 호스트가 무시되고 구성된 라우팅 규칙에 따라 메시지가 전달됩니다. 바라보다호스팅된 도메인 만들기 그리고운송 모듈더 많은 정보를 알고 싶습니다.
로컬 MDA 및 프록시 이는 다음과 같은 다양한 방법으로 달성할 수 있습니다.
- 이메일 계정 자격 증명의 로컬 복사본을 보관하고 이를 사용하여 로컬 MDA에 사용자를 인증합니다. 이 복사본은 기본적으로 각 사용자 계정의 "로컬" 폴더로 전달될 수 있습니다.
- courier-authlib/authpipe 또는 Perdition을 사용하여 이러한 자격 증명을 나머지 폴더를 포함하여 원격 MDA에 동시에 전달하세요.
- SMTP 서비스가 시작될 때 "로컬" 폴더의 새 메일을 원격 MTA로 다시 보내도록 cron 작업을 설정합니다.
...또는 내부 DNS를 구현하고 다음을 수행합니다.
- 모든 것을 두 MTA로 라우팅하도록 회사 도메인의 MX 기본 설정을 변경합니다(기술적으로 두 개의 내부 MTA가 필요함).
또는
- 사무실 내 이메일에 다른(가짜라도) 도메인 이름을 사용하고 장애 조치 시스템으로 구현하기만 하면 됩니다.