web-dev-qa-db-ja.com

rootのメールを転送するPostfixを取得する

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

ルートでcronジョブが実行されるときはいつでも、出力メールはローカルに配信されず、代わりにメインのメールサーバーを介して[email protected]に送信されます。これは私が望むものではありません。

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

~root/.forward/etc/aliasesの両方を変更してみました(そしてnewaliasesを実行しています)。

私に何ができる?

これは/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=<[email protected]>
Mar  7 09:39:18 linux1 postfix/qmgr[28525]: F3B9C98025E: from=<[email protected]>, size=283, nrcpt=1 (queue active)
Mar  7 09:39:18 linux1 postfix/smtp[31558]: F3B9C98025E: to=<[email protected]>, 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: [email protected]
postmaster:    root

ここで、anothermail @ anotherdomain.comは、ルートのメールが転送される場所です。

/etc/hostsの内容は、実際には少し驚きます。

127.0.0.1 localhost
127.0.1.1 linux1.mylinux.mydomain.com linux1

ここで、「mylinux」は、linux1が仮想マシンとして実行されるホストオペレーティングシステムのホスト名です。 「mylinux」がどのように導入されたかはわかりません。 (しかし、これが本当に私の問題の理由でしょうか?)

13
oz1cz

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

あなたの場合、postfixデーモンはメールがそれのためのものではないと考え、/etc/aliasesを使用せずに送信します

最初に/etc/hostsファイルを確認します。次のように、127.0.1.1に対応するマシン名が含まれている必要があります。

127.0.1.1  linux1.mydomain.com  linux1

/etc/mailnameも確認してください。一貫性があるはずです。

/etc/aliasesをチェックして、root(ユーザー)が別のユーザーに送信されているかどうかを確認し、newaliasesコマンドをやり直してください。

そしてそれはうまくいくはずです!

13
Dom

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

8
ColinM

状況によっては(つまり、すべてのメールが外部システムにリレーされる場合)、ルートのcrontabのMAILTO変数を実際のメールアドレスに設定する方が簡単です。これは、ルートへの従来の配信をほとんどバイパスし、必要な場所に移動するだけです。

# Root's crontab
[email protected]
0 0 * * * /usr/bin/somescript
1
Dale Anderson

少なくとも強化されたシステムでは、Postfixデーモンによる/root/.forwardのオープンにいくつかの問題があるようです(私は調べていません)。にもかかわらず:

# 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を追加すると正常に機能します。

0
r2oro