ルートのメールを転送するための接尾辞を取得


13

Postfixを実行しているUbuntuサーバーがあります。私のドメインのメールサーバーではありません。

cronジョブがルートに対して実行されるたびに、出力メールはローカルに配信されず、代わりにメインメールサーバー経由でroot@mydomain.comに送信されます。これは私が望むものではありません。

ルート宛のメールをローカルに配信するか、anothermail @ anotherdomain.comに転送したい。

私は両方~root/.forwardを変更しようとしました/etc/aliases(そしてnewaliasesを実行しました)が、何も役に立ちません(これらのファイルは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」がどうやって入ったのかわかりません。(しかし、これが本当に私の問題の理由でしょうか?)


ルートにメールを送信するときに、後置ログを提供していただけますか?
ドム

私は元の投稿の編集でそうしました。
oz1cz

/ etc / mailnameと/ etc / aliasesファイルを教えてください。/ etc / hostsに、127.0.1.1に割り当てられたlinux1.mydomain.comが含まれているかどうかを確認します
Dom

元の投稿に情報を追加しました。
oz1cz

ログによると、メールはisp smtp relayに正しく送信されています。問題についての手掛かり(スパム対策、エラーなど)がないか、my.isps.relayhost.com [<IPアドレスが省略されました>]ログを確認するように(isp)に依頼します。

回答:


13

通常は、ログを確認してください。

あなたの場合、postfixデーモンはメールは自分宛ではないと判断し、使用せずに送信します /etc/aliases

最初に/etc/hostsファイルを確認します。127.0.1.1に対応するマシン名が必要です。 127.0.1.1 linux1.mydomain.com linux1

あなた/etc/mailnameもチェックして、それは一貫している必要があります。

/etc/aliasesrootユーザーが別のユーザーに送信されているかどうかを確認して、newaliasesコマンドをやり直してください。

そして、それは動作するはずです!


それは127.0.0.1どうですか?
ネイト

127.0.0.0/8の任意のアドレスを使用できるため、127.0.0.1もうまく機能します。
ドム

スマートホストリレーを使用してメールを送信したいだけで、同様の問題が発生しました。「myhostname」は「localhost」でなければなりませんでした。他のものはエイリアスファイルをスキップしました。
アレックス

8

mydestinationが空または含まれていない場合、postfixは電子メールがローカル配信ではないと見なし、ローカルエイリアスを適用しないため$myhostname/etc/aliasesは無視されます。そのためmydestination、デフォルトのままにする(postconf -d mydestinationまたはから削除するmain.cf)と、ログにto=<...>エイリアスアドレスとして表示されます。


外部メールサーバーを使用していますが、mydestination空である必要があります。それ以外の場合、メールは送信されません。
コーニ

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.