私はMac OS(10.13.4)を使用しています。何とかメールサーバーを実行し、[email protected]
次のコマンドを使用して電子メールを送信できました。
echo "mbody" | mail -s "msub" "[email protected]"
登録されていないDNSのため、電子メールはまだスパムフォルダに保存されています。
postfix
私のシステムで実行されていません:
katie@nyxae $ sudo postfix status
postfix: Postfix is running with backwards-compatible default settings
postfix: See http://www.postfix.org/COMPATIBILITY_README.html for details
postfix: To disable backwards compatibility use "postconf compatibility_level=2" and "postfix reload"
/usr/sbin/postconf: warning: /etc/postfix/main.cf: unused parameter: use_sacl_cache=yes
/usr/sbin/postconf: warning: /etc/postfix/main.cf: unused parameter: imap_submit_cred_file=
/usr/sbin/postconf: warning: /etc/postfix/main.cf: unused parameter: mydomain_fallback=localhost
postfix/postfix-script: the Postfix mail system is not running
私はlsof -i 4 -a
既知の電子メールサービスがポート25で実行されていることを確認するために走りました。ただし、関連サービスが見つかりません。
だから私の質問は、どのサービスがこれを達成できるかということです。これがどのように可能ですか?
答え1
歴史的に、Unixmail
コマンドはネットワークサービスをまったく使用していませんでした。/usr/sbin/sendmail
必要なオプションのみを実行し、送信する電子メールを転送します。文字通り、それがsendmail
その名前を得たところです。受信メールの場合は、ユーザーのローカルシステムの受信トレイのみを読み取ります/var/mail/<username>
。
これらの規則により、Unixファミリーのオペレーティングシステムが他のメール転送ソフトウェア(macOSのPostfixなど)を使用している場合でも、ソフトウェアは以前の/usr/sbin/sendmail
単純さを達成するためによく知られているオプションのセットを理解するバイナリを提供する必要があります。相互作用。
したがって、この呼び出し方法は、Postfixソフトウェアが構成されておらず、工場出荷時の設定であっても、ワンタイムメール送信のためにPostfixの正しい部分を起動します。受信者がローカルユーザーの場合、または受信者サーバーがDNSから来ている可能性があります。 MXおよび/またはAレコードが決定されアクセス可能である場合、メッセージは送信され続け、プロセスは操作が成功したことをコマンドに示す/usr/sbin/sendmail
結果コード0で終了します。mail
ただし、受信者サーバーにすぐに接続できない場合、すべての賭けはキャンセルされます。この場合、コンポーネントは/usr/sbin/sendmail
メッセージをローカルシステムの送信メールキューに保存します(歴史的には/var/spool/mqueue
Postfixを使用して可能でした/var/spool/postfix/deferred
)。メール転送ソフトウェアの残りの部分が有効になっていない場合は、時間が経過するまで忘れていました。これは、メールキューを定期的に確認する必要があるプロセスが実行されていないためです。