루트 메일을 전달하기위한 접미사 얻기


13

postfix를 실행하는 Ubuntu 서버가 있습니다. 내 도메인의 메일 서버가 아닙니다.

크론 작업이 루트에 대해 실행될 때마다 출력 메일이 로컬로 전달되지 않고 대신 기본 메일 서버를 통해 root@mydomain.com으로 전송됩니다. 이것은 내가 원하는 것이 아닙니다.

루트 메일을 로컬로 전달하거나 anothermail@anotherdomain.com으로 전달하고 싶습니다.

둘 다 수정 ~root/.forward하고 /etc/aliasesnewaliases를 실행 하려고 시도 했지만 아무런 도움이되지 않습니다 (postfix가 메일을 로컬로 배달하려고 할 때만 이러한 파일을 확인합니다).

어떡해?

이것은 /etc/postfix/main.cf:

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no
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
myhostname = linux1.mydomain.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = linux1.mydomain.com, localhost.linux1.mydomain.com, localhost
relayhost = my.isps.relayhost.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only

편집하다:

루트로 메일을 보낼 때 다음과 같이됩니다 /var/log/mail.log.

Mar  7 09:39:17 linux1 postfix/pickup[31381]: F3B9C98025E: uid=1000 from=<ct>
Mar  7 09:39:18 linux1 postfix/cleanup[31556]: F3B9C98025E: message-id=<20130307083917.F3B9C98025E@linux1.mydomain.com>
Mar  7 09:39:18 linux1 postfix/qmgr[28525]: F3B9C98025E: from=<ct@mydomain.com>, size=283, nrcpt=1 (queue active)
Mar  7 09:39:18 linux1 postfix/smtp[31558]: F3B9C98025E: to=<root@mydomain.com>, orig_to=<root>, relay=my.isps.relayhost.com[<IP address omitted>]:25, delay=0.72, delays=0.19/0.02/0.27/0.25, dsn=2.0.0, status=sent (250 Ok: queued as A97F5D8126)
Mar  7 09:39:18 linux1 postfix/qmgr[28525]: F3B9C98025E: removed

"ct"라는 이름은 내 사용자 이름입니다. 이 명령을 통해 위의 텍스트를 생성했습니다.

echo test | mail -s test root

내용 /etc/mailname은 :

mydomain.com

내용 /etc/aliases은 :

root: anothermail@anotherdomain.com
postmaster:    root

anothermail@anotherdomain.com은 루트 메일을 전달할 위치입니다.

/etc/hosts실제로 내용은 조금 놀랍습니다.

127.0.0.1 localhost
127.0.1.1 linux1.mylinux.mydomain.com linux1

여기서 "mylinux"는 linux1이 가상 머신으로 실행되는 호스트 운영 체제의 호스트 이름입니다. "mylinux"가 어떻게 들어 왔는지 잘 모르겠습니다. (그러나 이것이 실제로 내 문제의 원인 일 수 있습니까?)


루트로 메일을 보낼 때 postfix 로그를 제공해 주시겠습니까?
Dom

원래 게시물을 수정하여 그렇게했습니다.
oz1cz

/ etc / mailname 및 / etc / aliases 파일을 알려주시겠습니까? / etc / hosts에 12 : 41.1.1에 할당 된 linux1.mydomain.com이 포함되어 있는지 확인하십시오
Dom

원래 게시물에 정보를 추가했습니다.
oz1cz

로그에 따르면, 메일이 isp smtp 릴레이로 올바르게 발송되었습니다. 문제에 대한 단서 (스팸 방지, 오류 등)가 있는지 my.isps.relayhost.com [<IP 주소 생략>] 로그를 확인하도록 (isp) 요청했습니다.

답변:


13

ususal로서, 당신의 로그를 확인하십시오.

귀하의 경우 postfix 데몬은 메일이 해당 메일이 아니라고 생각하여 사용하지 않고 보냅니다. /etc/aliases

먼저 /etc/hosts파일을 확인하십시오 . 다음 127.0.1.1과 같이 시스템 이름이에 해당해야 합니다.

127.0.1.1  linux1.mydomain.com  linux1

당신 /etc/mailname도 확인하십시오 , 일관성이 있어야합니다.

/etc/aliases루트 (사용자)가 다른 사용자에게 전송 되었는지 확인 하고 newaliases명령을 다시 실행하십시오 .

그리고 작동해야합니다!


그럴까요 127.0.0.1?
Nate

127.0.0.0/8의 주소를 가질 수 있으므로 127.0.0.1도 잘 작동합니다
Dom

스마트 호스트 릴레이 만 사용하여 메일을 보내려고했지만 비슷한 문제가있었습니다. "myhostname"은 "localhost"여야합니다. 다른 것은 aliases 파일을 건너 뛰었습니다.
Alex

8

경우 mydestination비어 있거나 포함되지 않은 $myhostname는 다음 /etc/aliases후위는 이메일이 로컬 배달 아니므로 로컬 별칭을 적용하지 않을 생각하기 때문에 무시됩니다. 따라서 mydestination기본값을 그대로 두거나 에서 postconf -d mydestination제거 main.cf하면 로그에 to=<...>가명 주소로 표시 됩니다.


외부 메일 서버를 사용하고 mydestination있으며 비어 있어야합니다. 그렇지 않으면 메일이 전송되지 않습니다.
Corni

1

경우에 따라 (예 : 모든 메일이 외부 시스템으로 릴레이되는 경우) MAILTO루트 crontab 의 변수를 실제 이메일 주소로 설정하는 것이 더 쉽습니다 . 이것은 루트로의 전통적인 전달을 우회하고 원하는 곳으로 이동해야합니다.

# Root's crontab
MAILTO=someone@example.com
0 0 * * * /usr/bin/somescript

0

/root/.forward적어도 강화 된 시스템에서 postfix 데몬 으로 여는 데 약간의 문제가있는 것 같습니다 (파헤쳐 보지 않았습니다). 무례:

# ls -ld / /root /root/.forward
dr-xr-xr-x. 18 root root  236 Dec  4 00:02 /
dr-xr-x--x. 13 root root 4096 Jan  8 17:45 /root
-rw-r--r--.  1 root root   30 Jan  8 14:51 /root/.forward

postfix 디먼의 하위는 .forward에 액세스 할 수 없습니다.

7603  open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 16
7603  fstat(16, {st_mode=S_IFREG|0644, st_size=1227, ...}) = 0
7603  mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f86854fb000
7603  read(16, "root:x:0:0:root:/root:/bin/bash\n"..., 4096) = 1227
7603  close(16)                         = 0
7603  munmap(0x7f86854fb000, 4096)      = 0
7603  geteuid()                         = 89
7603  getegid()                         = 89
7603  geteuid()                         = 89
7603  setresuid(-1, 0, -1)              = 0
7603  setresgid(-1, 0, -1)              = 0
7603  setgroups(1, [0])                 = 0
7603  lstat("/root/.forward", 0x7ffc03f84750) = -1 EACCES (Permission denied)

나는 입장 덧붙이 ... 그것으로 발굴 할 시간이 없었다 /etc/aliases다음 newaliases작품의 벌금을.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.