#inet_interface = all #inet_interface = $myhostname #inet_interface = $myhostname, localhost inet_interface = localhost
Linux(CentOS)にインストールしたPostfixを設定します。
インストールについての記事は
を参照してください。
メールがメールボックスに格納される際に、ディスク書き込みがブロックされる可能性があるため、SELinuxを無効化します。SELinuxの無効化についてはこちらの記事を参照してください。
メールサーバーに接続できるアドレスを設定します。今回は外部から接続してメールを送信できるメールサーバーを構築するため、
/etc/postfix/main.cf ファイルの
#inet_interface = all #inet_interface = $myhostname #inet_interface = $myhostname, localhost inet_interface = localhost
と記述されている部分を
inet_interface = all #inet_interface = $myhostname #inet_interface = $myhostname, localhost #inet_interface = localhost
mydestination = $myhostname, localhost.$mydomain, localhost #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, mail.$mydomain, www.$mydomain, ftp.$mydomain
ドメイン宛のメールはバーチャルメールボックスで受け取るため、mydestinationが上記になっていることを確認します。
または
mydestination = localhost #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, mail.$mydomain, www.$mydomain, ftp.$mydomain
とします。
ローカルネットワークからSMTP認証なしで送信する場合や、中継を許可する場合にはmynetworksを設定する必要があります。
を記述します。
main.cfのvirtual_uid_maps(後述)で指定するuidを持つユーザーを作成します。以下のコマンドを実行します。
groupadd -g 5000 vmail useradd -g vmail -u 5000 vmail -s /bin/false -d /home/vmail -m
または
useradd -u 5000 -s /bin/false vmail
/etc/postfix/main.cf ファイルに以下を追記します。
virtual_mailbox_domains = (受信するドメイン名) virtual_mailbox_base = /var/mail/vhosts virtual_mailbox_maps = hash:/etc/postfix/vmailbox virtual_minimum_uid = 100 virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 virtual_alias_maps = hash:/etc/postfix/virtual
今回は以下を記載しました
virtual_mailbox_domains = ipentec.com, ixx.jp virtual_mailbox_base = /home/mail/vhosts virtual_mailbox_maps = hash:/etc/postfix/vmailbox virtual_minimum_uid = 100 virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 virtual_alias_maps = hash:/etc/postfix/virtual
※virtual_mailbox_baseを/homeに変えました。
※複数のドメインを受信する場合はvirtual_mailbox_domainsに","で区切り受信するドメインを記載します。
メールユーザーのディレクトリ内に配置する場合は、以下の記述でも良いです。
virtual_mailbox_domains = ipentec.com, ixx.jp virtual_mailbox_base = /home/vmail/vhosts virtual_mailbox_maps = hash:/etc/postfix/vmailbox virtual_minimum_uid = 100 virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 virtual_alias_maps = hash:/etc/postfix/virtual
virtual_mailbox_domains のドメイン名が多くなる場合は、ドメインを記載したファイルを指定することもできます。
virtual_mailbox_domains = /etc/postfix/vdomains virtual_mailbox_base = /home/vmail/vhosts virtual_mailbox_maps = hash:/etc/postfix/vmailbox virtual_minimum_uid = 100 virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 virtual_alias_maps = hash:/etc/postfix/virtual
この場合、/etc/postfix/vdomains ファイルには受信するドメインを記載します。
iepntec.com ipentec.net ixx.jp
受信するドメインを1行に1つ記載します。
virtual_mailbox_base の位置についてです。
今回の例では /home/vmail/vhosts としています。これは、virtual_uid_maps で作成するuid=5000 のユーザー名が vmailであるため、このユーザーのディレクトリの下にメール格納ディレクトリを配置するというポリシーに沿って設定しています。
メールはサーバー全体の共通のシステムと考えた場合、特定のユーザー(この場合はvmail)のホームディレクトリ内に格納するのは不自然との考えもあります。その場合は、/etc/vmail や /home/mail や /home/vhosts など別の場所をvirtual_mailbox_base に指定することもできます。
/etc/postfix/vmailbox ファイルに以下を追記します。
(受信するメールアドレス) (メールボックスフォルダ名) ...
今回は以下を記載しました。
test@ipentec.com ipentec.com/test/Maildir/ info@ipentec.com ipentec.com/info/Maildir/ penguin@ipentec.com ipentec.com/penguin/Maildir/ info@ixx.jp ixx.jp/info/Maildir/
Maildir形式にする場合はMaildirと末尾の"/"まで含めます。
/etc/postfix/vmailbox ファイルを編集後
postmap /etc/postfix/vmailbox
コマンドを実行し更新処理をします。
バーチャルメールボックスのドメインのディレクトリを作成する必要があります。
cd /home mkdir vmail chown 5000 vmail chgrp 5000 vmail cd vmail mkdir vhosts chown 5000 vhosts chgrp 5000 vhosts cd vhosts mkdir ipentec.com chown 5000 ipentec.com chgrp 5000 ipentec.com mkdir ixx.jp chown 5000 ixx.jp chgrp 5000 ixx.jp
上記のコマンドを入力し /home/vmail/vhosts 以下に各ドメインのメールディレクトリを作成します。
以前のPostfixでは、ドメイン名のディレクトリまで作成すればそれ以下のディレクトリはシステムで作成されましたが、新しいPostfixでは、MailDirのディレクトリまで作成する必要があります。最新のPostfixでは以下のコマンドとなります。
(vmail ユーザーを作成し、vmailユーザーのディレクトリ内にMailDirを作成しています。)
su vmail cd /home/vmail mkdir vhosts cd vhosts mkdir ipentec.com cd ipentec.com mkdir -p test/Maildir mkdir -p info/Maildir mkdir -p penguin/Maildir cd .. mkdir ixx.jp cd ixx.jp mkdir -p info/Maildir
/etc/postfix/virtual ファイルに以下を追記します。
(受信するメールアドレス)と(転送先ユーザー)の間の空白はスペース1文字でないと動作しない場合があります。
今回は転送するアドレスはないので追加はしませんでした。
/etc/postfix/virtual ファイルを編集後
postmap /etc/postfix/virtual
コマンドを実行し更新処理をします。
/etc/postfix/main.cfファイルを開き
smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
を記載します。
smtpd_sasl_auth_enable = yes
でPostfixのSMTPでSMTP AUTHを有効にします。smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
はSMTP Authで認証されたユーザーのメールは中継を許可する設定になります。コマンド | 意味 |
---|---|
permit_mynetworks | $mynetworksで指定されたIPアドレスのホストからのメールは中継を許可する |
permit_sasl_authenticated | SMTP Auth認証をされたユーザーのメールは中継を許可する |
reject_unauth_destination | 名前解決した配送先アドレスが $relay_domains またはそのサブドメインにマッチし、アドレスに送信者指定のルーティング (user@elsewhere@domain) を含まないとき。 Postfix が最終配送先のとき: $mydestination や $inet_interfaces, $virtual_alias_maps, $virtual_mailbox_domains にマッチするいずれかの配送先。 これ以外の時はメールの配送を拒否します。 |
/usr/lib64/sasl2/smtpd.conf
ファイル
(32ビット版の場合は /usr/lib/sasl2/smtpd.conf
ファイル)を変更します。
pwcheck_method: saslauth
を
pwcheck_method: auxprop
に変更します。
SMTPAuthを利用する場合は以下のファイルを変更します。
SMTPAuthを利用する場合は以下のファイルを変更します。
pwcheck_method: saslauthd
mech_list: plain login
pwcheck_method: auxprop
mech_list: plain login
SMTPAuthのユーザーを追加をするには
saslpasswd2 -c -u ipentec.com penguin
で、penguin@ipentec.com のメールユーザーのパスワードを設定できます。
saslpasswd2コマンドで作成されたユーザー情報は/etc/sasldb2に格納されます。postfixが/etc/sasldb2を参照できるようにパーミッションを変更する必要があります。
chgrp postfix /etc/sasldb2 chown postfix /etc/sasldb2
コマンドを実行し、/etc/sasldb2 のオーナーとグループをpostfixユーザーに変更します。
またアクセス権が640("-rw-r-----")になっていることを確認します。
UNIXユーザーアカウントでの認証ではないのでsaslauthdを停止させても問題ありません。
/etc/rc.d/init.d/saslauthd status
systemctl status saslauthd
でsaslauthdの起動状態を確認できます。
/etc/rc.d/init.d/saslauthd stop
systemctl stop saslauthd
でsaslauthdを停止できます。
サービスの設定ができていても、ファイアウォールでメールサーバーのポートが開いていない場合、通信ができません。ファイアウォールを設定して、メールサーバーで利用するポートを開放します。メールサーバーのファイアウォールの設定についてはこちらの記事を参照してください。
Dovcotでバーチャルメールボックスにアクセスするための設定は
の記事を参照してください。