Ubuntu 12.04でメールサーバーを実行しており、ボックスにはWebサーバー+メールサーバー(Postfix + Dovecot)があります。これは、Windows Azureクラウドでの仮想マシンのセットアップです。
問題:ネットワーク外にメールを送信できません。構成とログは次のとおりです。
後置:
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
dovecot_destination_recipient_limit = 1
inet_interfaces = all
mailbox_size_limit = 0
mydestination = abc.cloudapp.net, localhost.abc.cloudapp.net, localhost
myhostname = abc.cloudapp.net
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost =
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_transport = dovecot
Dovecot:
# 2.0.19: /etc/dovecot/dovecot.conf
# OS: Linux 3.2.0-65-virtual x86_64 Ubuntu 12.04.4 LTS ext4
auth_mechanisms = plain login
mail_location = maildir:/var/vmail/%d/%n/Maildir
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date ihave
passdb {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
plugin {
sieve = ~/.dovecot.sieve
sieve_dir = ~/sieve
}
protocols = " imap sieve pop3"
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0660
user = postfix
}
unix_listener auth-userdb {
group = vmail
user = vmail
}
}
ssl_cert = </etc/ssl/certs/mailserver.pem
ssl_key = </etc/ssl/private/mailserver.pem
userdb {
args = uid=vmail gid=vmail home=/var/vmail/%d/%n
driver = static
}
protocol lda {
mail_plugins = " sieve"
}
/var/log/mail.log
Jul 9 08:40:11 layfootak postfix/smtpd[44127]: connect from unknown[87.109.35.199]
Jul 9 08:40:12 layfootak postfix/smtpd[44127]: NOQUEUE: reject: RCPT from unknown[87.109.35.199]: 554 5.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[127.0.0.1]>
Mozilla Thunderbird電子メールクライアントを使用して、電子メールを適切に設定および取得できます。それは私の受信トレイを適切に表示しますが、外部ネットワークのような他の電子メールアドレスに電子メールを送信するとき、それはRelay access denied; from = to = proto = ESMTP helo = < [127.0.0.1]>
教えてください。
SMTPリレー構成の次の接尾部構成をセットアップした後、問題を修正しました。
Sudo postconf -e smtpd_sasl_type=dovecot
Sudo postconf -e smtpd_sasl_path=private/auth
Sudo postconf -e smtpd_sasl_auth_enable=yes
Sudo postconf -e smtpd_tls_security_level=may
Sudo postconf -e smtpd_tls_auth_only=yes
Sudo postconf -e smtpd_tls_cert_file=/etc/ssl/certs/mailserver.pem
Sudo postconf -e smtpd_tls_key_file=/etc/ssl/private/mailserver.pem
Sudo postconf -e smtpd_recipient_restrictions=" \
permit_mynetworks \
permit_sasl_authenticated \
reject_unauth_destination"
Postfixでホストされていないドメイン(したがって、外部メール)にメールを送信できるのは、Postfixの設定によって中継を行うことが許可されているIPとネットワークのみです。
Postfixでは、これらの許可されたIPとネットワークをmain.cf
のmynetworks
設定ディレクティブに与えることでこれを実現します。
あなたの場合、ローカルホストのみがPostfixインストールの外部へのメールの中継を許可されていることを示しています。
サーバーをオープンリレーにせずに外部にメールを送信できるようにするには、少なくとも外部メールを送信する必要があるクライアントのIPを追加する必要があります。
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 A.B.C.D/32
IPアドレスの後の/32
に注意してください。これは、Postfixがサブネット全体ではなく特定のアドレスのみを許可することを確認するためです。
すべてのクライアントが同じサブネット上にある場合、構成できます(例:すべてのクライアントは、マスクとして255.255.255.0を使用して192.168.1.0ネットワークに接続されます)。
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.0/24
もちろん、ユーザーにWebメールベースのソフトウェアをインストールする予定の場合、メールの送信と中継を許可されるホストはWebサーバーのみです。この場合、Postfixの構成を変更する必要はありませんが、WebメールソリューションがSMTPサーバーとして127.0.0.1を使用していることを確認してください。