Ubuntu 20.04システムで電子メールを送信するが受信しないメールサーバーであるPostfix nullクライアントを設定したいと思います。私は数日間、チュートリアル、Postfixドキュメント、フォーラムディスカッションなどの提案を試しました。それらの多くは完全な絵を提供していないか、互いに矛盾することもあります。つまり、システムが期待どおりに動作せず、どの設定が正しいかわかりません。
現在の設定と私が経験しているより正確な問題についてより具体的に説明します。セキュリティ上の理由から、example.com
ドメイン名と一部のIPアドレスを匿名化します。私は/etc/postfix/main.cf
次の設定を使用します。
# TLS parameters
smtpd_tls_cert_file=/etc/letsencrypt/live/mail.example.com/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/mail.example.com/privkey.pem
smtpd_tls_security_level=may
smtp_use_tls=yes
smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mail.example.com
mydomain = mail.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost.$mydomain, localhost, $myhostname
mynetworks = 127.0.0.0/8 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
inet_protocols = ipv4
local_transport = error: local delivery disabled
行として/etc/aliases
リストされ、含まれます。[email protected]
postmaster
/etc/mailname
mail.example.com
Postfix設定を変更したら、再起動手順を使用してくださいsudo systemctl restart postfix
。
外部 DNS サーバーは次の設定を使用します。
@ IN A 123.456.789.01
mail IN A 123.456.789.01
www IN A 123.456.789.01
autoconfig IN CNAME mail.your-server.com.
@ IN TXT "v=spf1 +a +mx ?all"
@ IN MX 0 mail
_autodiscover._tcp IN SRV 0 100 443 mail.your-server.com.
_imaps._tcp IN SRV 0 100 993 mail.your-server.com.
_pop3s._tcp IN SRV 0 100 995 mail.your-server.com.
_submission._tcp IN SRV 0 100 587 mail.your-server.com.
PostfixがインストールされているクラウドサーバーにはPTRレコードがあります。
以下でメールを送信しようとすると
sudo echo "Test" | mail -s "Test" [email protected]
current-user@hostname
システムは代わりにからjohn@abc
転送を試みます[email protected]
。ログには、次のエラーメッセージが表示されますSender address rejected: need fully-qualified address (in reply to RCPT TO command)
。masquerade_domains = example.com
とmail
オプションを使用して送信者のアドレスを変更してみましたr
。しかし、これはうまくいきません。以下でコンピュータ全体のホスト名を変更すると、
sudo hostnamectl set-hostname mail.example.com
しかし、Postfixで使用するホスト名を変更したいと思います。また、という名前のnoreply
新しいユーザーアカウントを設定しなくても、送信するアドレスのユーザー名を変更したいと思いますnoreply
。つまり、Eメールはから送信する必要があります[email protected]
。
ホスティングプロバイダはポート25のロックを解除しました。したがって、これは問題ではありません。
Nginx Webサーバー(example.com
)とPostfixメールサーバー()用にmail.example.com
別々のLet's Encrypt証明書をダウンロードしました。
私の考えでは、myhostname
(一部の例ではこの設定を空白のままにします)、(一部の例では別のアドレスを使用します)、または(受信メールを受け入れたくないので、ホストはリレー設定を必要としないと思いますかmydomain
?)です。 Postfix設定またはDNS設定の一部が正しく定義されていません。私のAレコードが正しいと確信していますが、他のDNSエントリについてはまったくわかりません。一部のチュートリアルではMXレコードの設定をお勧めしますが、他のチュートリアルではお勧めしません。シェルで直接電子メールを使用している場合は、SRVレコードが必要ですか?alias_maps
alias_database
myorigin
mydestination
mynetworks
relayhost
mail
前述したように、私は数日間構成作業をしながら、ドキュメント、チュートリアル、および多くのフォーラムディスカッションを見ました。期待した結果は出ませんでした。タスクは、単に受信メールを許可せずにコマンドラインから電子メールを送信する安全なメールサーバーを設定することです。上記の設定のうち、このアプリケーションに誤った設定または不適切な設定は何ですか?
私はメールサーバーを初めて使用し、「文書を読む」(私がこれをやっている)や「関連記事を読む」(これもやっている)以外の有用なコメントや回答を得ることを期待しています。
答え1
リスニングと送信の設定方法はに記載されています/etc/postfix/master.cf
。
受信を無効にするには、次のような行を見つけます。
<hostname>:smtp inet n - n - - smtpd -o smtpd_sasl_auth_enable=no -o syslog_name=smtpd -o smtp_helo_name=<hostname> -o myhostname=<hostname> -o smtpd_banner=$smtpd_banner_bgcomp
そしてコメントをつけてください。これにより、smtpポートがリッスンするのを防ぎます。これはsmtpd
重要なポイントです。
次の行のいずれかまたは両方が必要です。
<socket relative pathname under in private queue directory> unix - - n - - smtpd -o smtpd_sasl_auth_enable=no -o syslog_name=smtp -o smtp_helo_name=<hostname> -o smtp_bind_address=<ip address> -o smtp_bind_address6=<ipv6 address>
<hostname>:submission inet n - n - - smtpd -o smtpd_sasl_auth_enable=no
これにより、Unixドメインソケットまたは転送用の送信ポートを介してローカルに電子メールを注入できます。これらの内容はすべてman 5 master
ホストが存在しない場合は、多くのシステムが電子メールを拒否するため、送信元IPアドレスを指すDNSにmxホストを設定することをお勧めします。
いつものように、私に何か問題があると確信していました。
これは私のシステムにのみ当てはまるので、あなたのシステムは少し異なるかもしれません。