私は内部的に利用可能なメールサーバーを使用してメールを送信するためにsendmailを使用してきました。ただし、現在のセキュリティ上の理由でポート25がブロックされています。
sendmailユーティリティでポート番号を指定する方法があるかどうか疑問に思います。そのポートを開くことができると仮定して、セキュアSMTP-MSAポート587を代替として使用しようとしています。
sendmailのマニュアルページには何も見つかりません。これを実行できる代替ユーティリティはありますか?
答え1
明示的に設定しない限り、メールはポート 25 経由で送信されます。
SMTP以外のポートまたはプロトコルを使用してメールをルーティングできますが、これは通常独自のネットワーク内でのみ機能します。目的の受信者のメールサーバーは、ポート25のSMTPを介して着信メールのみを受け入れる可能性があります。
たとえば、ポート587でリッスンするようにsendmailを設定すると、通常、ユーザーが認証されている場合はそのポートに着信する電子メールのみが許可されます。
DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')
着信および/または送信SMTPトラフィックを制限するほとんどのネットワーク(オープンメールリレー、スパム、およびその他の乱用を防ぐための消費者ISPおよび企業ネットワークの優れた一般的な慣行)は、リレーサーバーを提供します。メールを送信できますが制限はありません。 。中継サーバーは、コンテンツ(ウイルス、スパム)を確認したり、ポリシーを実施したり(標準の通知を追加したり、コンプライアンスのためにメッセージをアーカイブしたり、受信者を制限したり)などを実行できます。
sendmailにスマートホストと呼ばれるリレーサーバーがある場合
# sendmail.mc
define(`SMART_HOST',`relay.example.com`)dnl
中継サーバがポート 587 でリッスンしている場合、これは次のようになります。
# sendmail.mc
define(`SMART_HOST',`relay.example.com`)dnl
define(`RELAY_MAILER',`esmtp')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl
sendmailはすべてのEメールトラフィックをリレーに転送し、リレーサーバーはメールを意図した受信者に転送し、リレーサーバーは認証を必要としないと仮定します。
mailertable を使用してメール ルーティングを微調整できます。
一部の電子メールドメインを1つのリモートTCPポートにルーティングし、他のドメインを別のリモートTCPポートにルーティングするには、sendmail.cfでいくつかの編集を実行して新しいメールプログラムを設定する必要があります。既存のesmtpメーラーの設定をコピーし、ポート番号を追加します。
# sendmail.cf
# <snip>
Mesmtp587, P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
T=DNS/RFC822/SMTP,
A=TCP $h 587
Mesmtp2525, P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
T=DNS/RFC822/SMTP,
A=TCP $h 2525
トランスポートチャネルは、デフォルトのesmtp587
25または2525、またはユーザーが指定した代替ポートの代わりにポート587に移動します。
次に、メーリングリストに次のように入力します。
example.com esmtp587:example.com
example2.com esmtp2525:example2.com
上記の行を使用すると、sendmailはexample.comのMXレコードを検索できます。 example.comにデフォルト以外のポートをサポートする(リレー)smtpサーバーのみがある場合、構文は次のとおりです。
example.com esmtp587:[smtp.example.com]
角かっこはsendmailにsmtp.example.comの可能なMXレコードを無視し、@example.comへのすべてのメールをsmtp.example.com:587にルーティングするように指示します。
答え2
sendmail.mcファイルエントリ:
dnl Modify relay mailer to make it connect to port 587 instead of 25
define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl
dnl Define relay for non local email
dnl Use [] to disable looking up for MX records
define(`SMART_HOST', `relay:[name.of.smart.host]')dnl
Sendmail FAQ 3.39:代替ポートを使用して送信する方法は?
PS FEATURE(mailertable)を使用して、特定の外部電子メールドメインに対して異なるリレーを指定できます。