過去mail160630

こちらは1回線で、1ipアドレスをプロバイダーから拝借している。
その1ipアドレスはプロバイダのddnsで配布されるので常に変化する。

DNSのMXレコードが名前管理会社で付けられるようなので、ddnsな環境だけどメールサーバを作ってみた。
材料はCentOS 7

POP/IMAP設定:mail/dovecot
SMTP-AUTH設定:mail/smtp-auth
ヴァーチャルメールボックスmail/VirtualMailbox
メーリングリスト管理mail/Mailman
sambaADと連携mail/samba
SPFmail/SPF
設定マニュアルhttp://www.postfix-jp.info/trans-2.1/jhtml/postconf.5.html

dns設定

プロバイダから動的に配布されたipアドレスを、名前管理会社謹製のddnsクライアントアプリで、ホスト名web.chaperone.jpに都度アサインさせている。そして同時にホスト名/ドメイン名のMXレコードもホスト名web.chaperone.jpに割り当てている(優先度10)。
2017y03m18d_080654894.png
ipアドレスはダミーの値です

これでプロバイダから動的に変更されるipアドレスにwebサイトもMX情報も追従できる。
一応、nslookupで確認してみると。

[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 ~]#

インストール

どうやらはじめからインストールされている。

[root@c ~]# yum list installed |grep postfix
postfix.x86_64                     2:2.10.1-6.el7                      @anaconda
[root@c ~]#

受信設定

設定ファイルの/etc/postfix/main.cfで、下記の箇所のみ変更した

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
[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を再起動すれば、メールの受信は可能となる。試しに外部からメールを送り付けると
/var/log/maillogには

 :
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/(宛先)にメールが追加されていた。

送信設定

受信ができたので、今度は送信。
まずはweb.chaperone.jpから直接メールを出してみる。このサイトはプロバイダー配下にあるマシンでOP25Bの影響下にある。なので、このweb.chaperone.jpからメールを直接相手のsmtpサイトに送ることは無理で、一旦プロバイダのメールサーバを経由する必要がある。

プロバイダのメールサーバが「vsmtp.xxxxxx.ne.jp」なら下記を /etc/postfix/main.cf の末尾に加えて postfix を再起動します。

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

*smtp_sasl_password_mapsは、中継役のメールサーバ「vsmtp.xxxxxx.ne.jp」の認証用ファイルである。
作り方は下記の様なファイル(/etc/postfix/smtp_auth_conf)を作成して

vsmtp.xxxxxx.ne.jp    <アカウント>:<パスワード>

postfixパッケージに入っているpostmapコマンドでハッシュ化する。ハッシュ化したら原材料は削除します

[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

*できたファイルには「.db」なる拡張子が付きますが、指定するのは拡張子なしのファイルです

postfixを再起動したらweb.chaperone.jpから直接メールを出してみます。

[illya@c ~]$ /usr/lib/sendmail -t (相手)@gmail.com
Subject: ok?
This is test mail
.
[illya@c ~]$

すると、/var/log/maillogに

[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にもメールが届いた。

ドメイン内マシンからのメール送信

前述は web.chaperone.jp からの直接メール送信です。
ここでは、内部ドメイン sybyl.local に所属するマシンからのメール送信を記す。
注意 送信者のメールアドレスは <ユーザ>@chaperone.jpです。
単純に、sybyl.localのマシンらは、web.chaperone.jpを踏み台にしてメール出していいよと定義すればいい。

/etc/postfix/main.cfにて、mynetworks と mynetworks_style は共に未定義である。mynetworksは、許可する踏み台を指定できる。未定義であるとweb.chaperone.jpが所属するIPサブネットが対象となる。その対象はpostconfコマンドで確認できて

[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 ~]#

とある。
なので、内部ドメインのsybyl.localはそのIPは192.168.0.0/24を使っているので、何もせずとも踏み台にできるみたい。

っで他のマシン(2nd.sybyl.local[192.168.0.33])からtelnetを使ってメールを出してみる

[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 ~]#

この結果、中継のweb.chaperone.jpのmaillogには

 :
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サブネットからメールは出せた。


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2017-03-30 (木) 21:16:29 (142d)