&size(10){過去[[mail160630]]};
こちらは1回線で、1ipアドレスをプロバイダーから拝借している。
その1ipアドレスはプロバイダのddnsで配布されるので常に変化する。
DNSのMXレコードが名前管理会社で付けられるようなので、ddnsな環境だけどメールサーバを作ってみた。
材料は&color(lightseagreen){''CentOS 7''};。
POP/IMAP設定:[[mail/dovecot]]
SMTP-AUTH設定:[[mail/smtp-auth]]
ヴァーチャルメールボックス[[mail/VirtualMailbox]]
メーリングリスト管理[[mail/Mailman]]
sambaADと連携[[mail/samba]]
SPF[[mail/SPF]]
設定マニュアル[[http://www.postfix-jp.info/trans-2.1/jhtml/postconf.5.html>+http://www.postfix-jp.info/trans-2.1/jhtml/postconf.5.html]]
***dns設定 [#zbd9e159]
プロバイダから動的に配布されたipアドレスを、名前管理会社謹製のddnsクライアントアプリで、ホスト名&color(maroon){web.chaperone.jp};に都度アサインさせている。そして同時にホスト名/ドメイン名のMXレコードもホスト名&color(maroon){web.chaperone.jp};に割り当てている(優先度10)。
&ref(2017y03m18d_080654894.png,nolink);
&size(10){ipアドレスはダミーの値です};
これでプロバイダから動的に変更されるipアドレスにwebサイトもMX情報も追従できる。
一応、nslookupで確認してみると。
#code(nonumber){{
[root@c ~]# nslookup
> set querytype=MX
> chaperone.jp
Server: 192.168.0.3
Address: 192.168.0.3#53
Non-authoritative answer:
chaperone.jp mail exchanger = 10 web.chaperone.jp.
Authoritative answers can be found from:
chaperone.jp nameserver = 04.dnsv.jp.
chaperone.jp nameserver = 01.dnsv.jp.
chaperone.jp nameserver = 02.dnsv.jp.
chaperone.jp nameserver = 03.dnsv.jp.
web.chaperone.jp internet address = xxx.xxx.xxx.xxx
01.dnsv.jp internet address = 157.7.32.53
02.dnsv.jp internet address = 157.7.33.53
03.dnsv.jp internet address = 157.7.32.35
03.dnsv.jp has AAAA address 2400:8500:3000::53
04.dnsv.jp internet address = 157.7.33.35
04.dnsv.jp has AAAA address 2400:8500:3fff::53
> exit
[root@c ~]#
}}
***インストール [#b3e488a7]
どうやらはじめからインストールされている。
#code(nonumber){{
[root@c ~]# yum list installed |grep postfix
postfix.x86_64 2:2.10.1-6.el7 @anaconda
[root@c ~]#
}}
***受信設定 [#zc4c66ec]
設定ファイルの&color(magenta){/etc/postfix/main.cf};で、下記の箇所のみ変更した
#code(diff){{
[root@c ~]# diff -u /etc/postfix/main.cf.orig /etc/postfix/main.cf
--- /etc/postfix/main.cf.orig 2017-03-15 18:44:39.400242494 +0900
+++ /etc/postfix/main.cf 2017-03-15 18:52:45.803695716 +0900
@@ -74,6 +74,7 @@
#
#myhostname = host.domain.tld
#myhostname = virtual.domain.tld
+myhostname = web.chaperone.jp
# The mydomain parameter specifies the local internet domain name.
# The default is to use $myhostname minus the first component.
@@ -81,6 +82,7 @@
# parameters.
#
#mydomain = domain.tld
+mydomain = chaperone.jp
# SENDING MAIL
#
@@ -96,7 +98,7 @@
# to recipient addresses that have no @domain part.
#
#myorigin = $myhostname
-#myorigin = $mydomain
+myorigin = $mydomain
# RECEIVING MAIL
@@ -110,10 +112,10 @@
#
# Note: you need to stop/start Postfix when this parameter changes.
#
-#inet_interfaces = all
+inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
-inet_interfaces = localhost
+#inet_interfaces = localhost
# Enable IPv4, and IPv6 if supported
inet_protocols = all
@@ -161,8 +163,8 @@
#
# See also below, section "REJECTING MAIL FOR UNKNOWN LOCAL USERS".
#
-mydestination = $myhostname, localhost.$mydomain, localhost
-#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
+#mydestination = $myhostname, localhost.$mydomain, localhost
+mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
# mail.$mydomain, www.$mydomain, ftp.$mydomain
[root@c ~]#
}}
これでpostfixを再起動すれば、&color(orangered){''メールの受信''};は可能となる。試しに外部からメールを送り付けると
/var/log/maillogには
#code(nonumber){{
:
Mar 15 18:52:57 c postfix/master[19506]: daemon started -- version 2.10.1, configuration /etc/postfix <== postfix再起動
Mar 15 18:54:15 c postfix/smtpd[19530]: connect from mail-ua0-f172.google.com[209.85.217.172] <== gmailからアクセス
Mar 15 18:54:15 c postfix/smtpd[19530]: D4EEFC08216E: client=mail-ua0-f172.google.com[209.85.217.172]
Mar 15 18:54:16 c postfix/cleanup[19534]: D4EEFC08216E: message-id=<(略)@mail.gmail.com>
Mar 15 18:54:16 c postfix/qmgr[19508]: D4EEFC08216E: from=<(略:送信者)@gmail.com>, size=2549, (略
Mar 15 18:54:16 c postfix/local[19540]: D4EEFC08216E: to=<(略:宛先)@chaperone.jp>, relay=local, (略
Mar 15 18:54:16 c postfix/qmgr[19508]: D4EEFC08216E: removed
Mar 15 18:54:16 c postfix/smtpd[19530]: disconnect from mail-ua0-f172.google.com[209.85.217.172]
:
}}
と記載され、実際に/var/spool/mail/(宛先)にメールが追加されていた。
***送信設定 [#k734cbf8]
受信ができたので、今度は送信。
まずは&color(maroon){web.chaperone.jp};から直接メールを出してみる。このサイトはプロバイダー配下にあるマシンでOP25Bの影響下にある。なので、この&color(maroon){web.chaperone.jp};からメールを直接相手のsmtpサイトに送ることは無理で、一旦プロバイダのメールサーバを経由する必要がある。
プロバイダのメールサーバが「vsmtp.xxxxxx.ne.jp」なら下記を &color(magenta){/etc/postfix/main.cf}; の末尾に加えて postfix を再起動します。
#code(nonumber){{
relayhost = vsmtp.xxxxxx.ne.jp:587 <-- dnsのmxに従う場合。[]で括ると直接そのサイトへアクセス
smtp_use_tls = no <-- 通信の暗号化、「SSL/TLS」「STARTTLS」を使うのなら
smtp_sasl_auth_enable = yes <-- 「vsmtp.xxxxxx.ne.jp」へSASL認証を試みる
smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth_conf
}}
&color(red){*};smtp_sasl_password_mapsは、中継役のメールサーバ「vsmtp.xxxxxx.ne.jp」の認証用ファイルである。
作り方は下記の様なファイル(/etc/postfix/smtp_auth_conf)を作成して
#code(nonumber){{
vsmtp.xxxxxx.ne.jp <アカウント>:<パスワード>
}}
postfixパッケージに入っているpostmapコマンドでハッシュ化する。ハッシュ化したら原材料は削除します
#code(nonumber){{
[root@c ~]# postmap /etc/postfix/smtp_auth_conf
[root@c ~]# ls -l /etc/postfix/smtp_auth_conf*
-rw-r--r-- 1 root root 52 3月 15 20:13 /etc/postfix/smtp_auth_conf
-rw-r--r-- 1 root root 12288 3月 15 20:13 /etc/postfix/smtp_auth_conf.db
[root@c ~]#
[root@c ~]# rm /etc/postfix/smtp_auth_conf
}}
&color(red){*};&size(10){できたファイルには「.db」なる拡張子が付きますが、指定するのは拡張子なしのファイルです};
postfixを再起動したら&color(maroon){web.chaperone.jp};から直接メールを出してみます。
#code(nonumber){{
[illya@c ~]$ /usr/lib/sendmail -t (相手)@gmail.com
Subject: ok?
This is test mail
.
[illya@c ~]$
}}
すると、/var/log/maillogに
#code(nonumber){{
[root@c ~]# less /var/log/maillog
:
Mar 15 21:00:20 c postfix/pickup[22141]: E6104C08216E: uid=1002 from=<illya>
Mar 15 21:00:20 c postfix/cleanup[22188]: E6104C08216E: message-id=<20170315120020.E6104C08216E@web.chaperone.jp>
Mar 15 21:00:21 c postfix/qmgr[22142]: E6104C08216E: from=<(スパム対策)illya<at_>chaperone.jp>, (略
Mar 15 21:00:21 c postfix/smtp[22190]: E6104C08216E: to=<(略)@gmail.com>, relay=vsmtp.xxx.ne.jp[x.x.x.x]:587, (略
Mar 15 21:00:21 c postfix/qmgr[22142]: E6104C08216E: removed
:
}}
と記載され、実際にgmailにもメールが届いた。
***ドメイン内マシンからのメール送信 [#m311562b]
前述は &color(maroon){''web.chaperone.jp''}; からの直接メール送信です。
ここでは、内部ドメイン &color(darkgreen){''sybyl.local''}; に所属するマシンからのメール送信を記す。
&color(white,blue){注意}; 送信者のメールアドレスは <ユーザ>@chaperone.jpです。
単純に、&color(darkgreen){sybyl.local};のマシンらは、&color(maroon){''web.chaperone.jp''};を踏み台にしてメール出していいよと定義すればいい。
&color(magenta){/etc/postfix/main.cf};にて、mynetworks と mynetworks_style は共に未定義である。mynetworksは、許可する踏み台を指定できる。未定義であると&color(maroon){''web.chaperone.jp''};が所属するIPサブネットが対象となる。その対象はpostconfコマンドで確認できて
#code(nonumber){{
[root@c ~]# postconf |grep ^mynetworks
mynetworks = 127.0.0.0/8 192.168.0.0/24 [::1]/128 [fe80::]/64
mynetworks_style = subnet
[root@c ~]#
}}
とある。
なので、内部ドメインの&color(darkgreen){sybyl.local};はそのIPは192.168.0.0/24を使っているので、何もせずとも踏み台にできるみたい。
っで他のマシン(2nd.sybyl.local[192.168.0.33])からtelnetを使ってメールを出してみる
#code(nonumber){{
[root@2nd ~]# telnet 192.168.0.3 25
Trying 192.168.0.3...
Connected to 192.168.0.3.
Escape character is '^]'.
220 web.chaperone.jp ESMTP Postfix
HELO web.chaperone.jp <--- "HELO web.chaperone.jp"と入力
250 web.chaperone.jp
MAIL FROM:<illya<at_>chaperone.jp> <--- "MAIL FROM:<illya<at_>chaperone.jp>"と入力(スパム対策で表記)
250 2.1.0 Ok
RCPT TO:<(略)@gmail.com> <--- "RCPT TO:<(略)@gmail.com>"と入力(メール非表示)
250 2.1.5 Ok
DATA <--- "DATA"と入力
354 End data with <CR><LF>.<CR><LF>
Subject: okokok <--- "Subject: okokok"と入力
<--- 改行
I Have A Dream <--- "I Have A Dream"と入力
. <--- "."を入力
250 2.0.0 Ok: queued as 9D08EC08216E
quit <--- "quit"と入力
221 2.0.0 Bye
Connection closed by foreign host.
[root@2nd ~]#
}}
この結果、中継の&color(maroon){''web.chaperone.jp''};のmaillogには
#code(nonumber){{
:
Mar 15 21:59:05 c postfix/smtpd[23264]: 9D08EC08216E: client=2nd.sybyl.local[192.168.0.33]
Mar 15 21:59:58 c postfix/cleanup[23420]: 9D08EC08216E: message-id=<>
Mar 15 21:59:58 c postfix/qmgr[22142]: 9D08EC08216E: from=<illya<at_>chaperone.jp>, size=230, nrcpt=1 (queue active)
Mar 15 21:59:59 c postfix/smtp[23478]: 9D08EC08216E: to=<(略)@gmail.com>, relay=vsmtp.xxx.ne.jp[x.x.x.x]:587, (略
Mar 15 21:59:59 c postfix/qmgr[22142]: 9D08EC08216E: removed
Mar 15 22:00:01 c postfix/smtpd[23264]: disconnect from 2nd.sybyl.local[192.168.0.33]
:
}}
と記録され、<(略)@gmail.com>にもメールは届いた。
故、同じIPサブネットからメールは出せた。