0

Rails 4.1 でバウンスバック メールを受信できるようにしようとしていますが、この時点に到達することさえ非常に困難です。root としてログインしている場合、SSH コンソールで以下のコマンドを実行できますが、/etc/valiases ファイルに入れると、スクリプトから「次のアドレスが失敗しました」というバウンスバックが表示されます。

runuser -l useraccount -c "cd /home/useraccount/rails_deployments/dev.www/current/bin && rails runner -e development 'EBlast.receive(STDIN.read)'"

/etc/valiases/dev.mydomain.com

eblast-bounce@dev.mydomain.com: "|runuser -l useraccount -c "cd /home/useraccount/rails_deployments/dev.www/current/bin && rails runner -e development 'EBlast.receive(STDIN.read)'""

また、二重引用符を無駄にエスケープしようとしました。

root 用の RVM 環境変数が存在しないため、ユーザー アカウントとして実行する必要があります。root としてログインしているときに SSH コンソールで最初のコマンドを実行すると機能しますが、exim が電子メールを受信すると機能しません。

4

2 に答える 2

0

この問題を回避するために、私がしなければならなかったことがいくつかあります。

1) Toddが提案したように、ランナースクリプトを独自のファイルに移動します。ネストされた引用符が原因で、スクリプトの実行に失敗していました。

2) ファイルを実行可能にします。パーミッションはすでに 755 に設定されています。

3) exim は私のユーザー名を使用してスクリプトを実行していましたが、PATH や HOME などの環境変数はまったく設定されていません! これによりruby、未知のコマンドが発生しました。ほとんどのアプリは RVM とその gemsets に依存しているため、これは他の多くの問題を引き起こしました。そのため、Ruby を実行することはできませんでした。ruby ラッパーを明示的に呼び出しても、設定されていないspringため壊れてしまい$HOMEます。ユーザー環境が設定されていなかったため、一連の問題が発生しました。su - username -c 'whatever'また、exim が使用していたアカウントには使用権限がなかったため、発行できませんでしsuた。


したがって、作業セットアップは次のようになります。

/etc/valiases/dev.mydomain.com

eblast-bounce@dev.mydomain.com: "|/bin/bash -l -c '/home/useraccount/rails_deployments/dev.www/current/script/receive_eblast_bounce'"
*: ":fail: No Such User Here"

/home/useraccount/rails_deployments/dev.www/current/script/receive_eblast_bounce

D=`pwd`

HOME=/home/useraccount

if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi

if [[ -s "/home/useraccount/.rvm/scripts/rvm" ]] ; then
  source "/home/useraccount/.rvm/scripts/rvm"
fi

cd /home/useraccount/rails_deployments/dev.www/current
./bin/rails runner -e development 'EBlast.receive(STDIN.read)'

cd $D

SSL を使用すべきではないときに ActionMailer で問題が発生しています。それがここで行ったことに関連しているかどうかはわかりませんが、少なくとも Rails スクリプトは実行されます。

于 2014-04-28T20:00:50.167 に答える