実現したいこと
postfix にて メールを Python で加工して転送したい
前提
以下の記事を参考に、postfix にて メールを Python で加工して転送しようとしています。
タイトル:WSL に postfix を導入して Office365 宛のメールを中継して Python で加工する
URL:https://qiita.com/kerobot/items/0dda9cdeb3dd9569c815
環境が上記記事と異なっており、さくらのVPSにてUbuntu20.04を利用しています。
発生している問題・エラーメッセージ
上記のURL記載の手順に従って設定したところ、以下のエラーが発生します。
pipe[20926]: fatal: pipe_command: execvp /home/ubuntu/postfix/transfer_mail.py: No such file or directory
こちらのエラーを解消するため、アドバイスいただければと思っています。
試したこと
No such file or directoryとのことですが、ファイルは存在しています。
エラー文をコピペして
ls -l /home/ubuntu/postfix/transfer_mail.py と実行すると結果は、以下となります。
-rwxr-xr-x 1 ubuntu ubuntu 1244 Mar 6 18:55 /home/ubuntu/postfix/transfer_mail.py
また、VPSで別OSとしてalmalinuxで実施しても同じエラーが発生しました。
該当のソースコード
ソースコードとしては上記の記事からコピペして使っています。
Python
1#!/usr/bin/python3 2 3import sys 4import os 5import email 6import email.parser 7from os.path import join, dirname 8from subprocess import Popen, PIPE 9 10# 標準入力から取得 11mime_str = sys.stdin.read() 12# mime_str = open(sys.argv[4]).read() 13# Eメールとして解析 14message = email.parser.Parser().parsestr(mime_str) 15# メールの内容を吐き出すファイル 16filepath = join(dirname(__file__), 'result.txt') 17# メールの内容をファイルに吐き出す 18with open(filepath, mode='w') as f: 19 # パラメータ 20 for arg in sys.argv: 21 f.write(f"{arg}\n") 22 # メールヘッダ 23 for key in message.keys(): 24 value = message.get(key) 25 f.write(f"{key} : {value}\n") 26 # メール本文 27 payload = message.get_payload() 28 f.write(payload) 29# 送信元、送信先、件名を設定 30message["From"] = sys.argv[1] 31message["To"] = sys.argv[2] 32message["Subject"] = "Test mail !!!" 33# メールを転送 34command = ["/usr/sbin/sendmail", "-t", "-oi"] 35stdout = '' 36stderr = '' 37retval = 0 38process = Popen(command, stdin=PIPE) 39(stdout, stderr) = process.communicate(message.as_string().encode()) 40retval = process.wait() 41if retval == 0: 42 sys.exit(0) 43else: 44 sys.exit(1) 45
回答1件
あなたの回答
tips
プレビュー