MTA( Message Transfer Agent ) の違い −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− #--------------------------------------------------------------------------------------------- # 1. SMTP 並列(SMTP 接続の際、子プロセスを複数派生するか) #--------------------------------------------------------------------------------------------- ● qmail qmail はメールの送信スケジュールを決定するqmail-lspawn、又はqmail-rspawn により実際配信を承るqmail-local、又はqmail-remote が並列して起動され、メール配信が行われる。つまり、親プロセスでるqmail-lspawn、qmail-rspawn がその子プロセスとなるqmail-local, qmail-remote を複数起動して並列信を行う。 ● sendmail sendmail は基本的にsendmail プログラム一本でメールの配信、中継、受信を行うため、子プロセスを派生せず複数メール配信を行う場合はsendmail が複数起動される。つまり、親プロセスであるsendmail が複数起動する直列配信を行う。 #--------------------------------------------------------------------------------------------- # 2. SMTP 相乗り(一回のSMTP 接続でRCPT TO が相乗りされるか) #--------------------------------------------------------------------------------------------- ● qmail qmail はそのポリシー上、複数アドレスに対してそれぞれSMTP 接続を行いメール配信する。 ● postfix postfix は複数アドレスにメール配信する場合、まずアドレスの@より右側ドメインを参照し、同ドメンへの配信に対してSMTP 接続を行う。 ● sendmail sendmail は複数アドレスにメール配信する場合、まずDNS 接続により全アドレスのMX レコードを参照る。MX レコードが同一のアドレスに対してSMTP 接続を行う。 #--------------------------------------------------------------------------------------------- # 3. メール配信ポリシー #--------------------------------------------------------------------------------------------- ● qmail ・とにかく指定されたアドレス分メールを配信する。 ・同アドレス宛のメールはその数分だけ配信する。 ● sendmail postfix ・なるべく同じドメインにメールをまとめてメール配信する。 故に、携帯端末などにメールを送る時は明らかに同ドメインに集中するので配信は効率よく行われる。 ・同アドレス宛のメールは一度だけ配信する。 ------------------------------------------------------------ 例えば、今MTA が送信しようとしているメールの宛先に first@foo.domain, second@foo.domain, third@bar.domainの3つが指定されており、foo.domain, bar.domain の MX レコードが共にmail.domainのみだったとします。 mail.domain 上のMTA は何でも構わないが、送信側のMTA によりメール配信方法が異なってくる。 ・qmail の時、各アドレスに対してそれぞれ SMTP 接続を試みるのでmail.domain に3回のSMTP 接続が 発生し、メール本文も3回送られる。 ・postfix の時、first@foo.domain と second@foo.domain の@ の右側が同じなので、この2つはmail.d omain にSMTP 接続した際に2つの RCPT TO: を送りメール本文は1回ですまされる。third@bar.domai n に関しては先の2つとは別にmail.domainに接続して再送信される。( 結局メール本文は2回送信 ) ・sendmail の時、どのアドレスもmail.domain に送信するべきことを先のDNS 接続により知っているの で、1回だけmail.domain に接続して3つのRCPT TO:を使いメール本文は1回だけ送られる。 ------------------------------------------------------------