CentOS8에는 거의 완벽한 Postfix(v3.3.1) 설정이 있습니다. 내 목표는 다음과 같습니다
- 서비스가 Linux 사용자에게 이메일을 보낼 수 있도록 허용합니다. (crontab에서 루트로)
- Linux 사용자의 공개 이메일은 허용되지 않습니다. ([이메일 보호됨])
- Linux 사용자를 생성하지 않고 공개 이메일을 받을 사용자를 정의합니다.
위의 작업을 성공적으로 수행했지만, 어떻게 예방해야 할지 모르는 부작용이 있습니다. 지금까지 내가 한 일들:
myhostname = server.foobar.com
mydomain = foobar.com
myorigin = $myhostname
mydestination = $myhostname, localhost
mail_spool_directory = /var/spool/mail
virtual_transport = virtual
virtual_mailbox_domains = foobar.com
virtual_mailbox_base = /var/spool/email/
이 비트는 Postfix 서비스에 $myhostname([이메일 보호됨]) 표준 시스템 이메일로 전송됩니다 /var/spool/mail
.
도메인의 Linux 사용자에게 전송된 모든 이메일[이메일 보호됨]가상 도메인으로 취급되어 가상 사용자를 찾아보고, 없으면 이메일을 거부합니다.
더미 사용자(예: 웹사이트 관리자)를 추가하면 해당 사용자에게 전송되는 모든 이메일([이메일 보호됨])이 승인되어 /var/spool/email/...
시스템 이메일과 별도의 공개 이메일로 전송됩니다.
질문...
누구든지 호스트 이름([이메일 보호됨]) 인터넷에서 수락되어 으로 전달되는 것을 /var/spool/mail
중지하는 방법을 모르겠습니다.
설정을 시도했지만 default_transport = error:Domain doesn't accept email.
동작이 바뀌지 않습니다. 문서에서는 이 기능을 지원하지 않지만 포럼에서 보고 시도해 보았습니다.
Linux 사용자를 user@$myhostname으로 유지하는 것은 나에게 중요하지 않습니다. 이는 스패머를 방지하기 위해 Linux 사용자를 동일한 도메인의 더미 사용자와 분리하는 방법을 알아낼 수 있는 유일한 방법일 뿐입니다.[이메일 보호됨],[이메일 보호됨], 등.
추가 구성 설정(중요한 경우):
html_directory = no
local_recipient_maps =
luser_relay = postmaster
mail_spool_directory = /var/spool/mail
meta_directory = /etc/postfix
mydestination = $myhostname, localhost
mydomain = foobar.com
myhostname = server.foobar.com
mynetworks_style = host
myorigin = $myhostname
relay_domains =
relayhost =
virtual_mailbox_base = /var/spool/email/
virtual_mailbox_domains = foobar.com
virtual_transport = virtual
이 문제를 해결할 수 있는 아이디어나 다른 방법이 있나요?
답변1
해결책을 찾았습니다.
내 질문에 명시된 대로 myorigin = $myhostname
로컬 사용자를 동일한 도메인의 가상 사용자와 별도로 유지하십시오.
smtpd_recipient_restrictions
섹션 에서 목록 뒤에 포인터를 main.cf
추가합니다 . 나는 그것을 사용했고 그것은 다음과 같습니다 :permit_mynetworks
check_recipient_access
hash:
# Don't include the "...", its just to show this is among other settings
smtpd_recipient_restrictions =
...
permit_mynetworks
check_recipient_access hash:/etc/postfix/block_mydomain
...
그런 다음 목록/해시 파일을 만듭니다./etc/postfix/block_mydomain
hostname.domain.com 513 Invalid domain.
파일을 저장하고 실행하여 postmap block_mydomain
*.db 버전을 만듭니다.
그런 다음 postfix를 다시 시작하십시오 systemctl restart postfix
.
테스트해본 결과 로컬에서 sendmail 명령을 사용하여 모든 Linux 사용자에게 메일을 보낼 수 있습니다. crontab은 로컬 Linux 사용자에게 이메일을 보낼 수 있습니다. 그러나 인터넷에서 이메일을 보내면 [email protected]
반송됩니다. 알고 싶다면[이메일 보호됨]여전히 승인되고 폐기됩니다.