僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
仮設のサーバ(MXも逆引きもSPFも設定済みだけど)
で、ようやく動くようになった。
VPSに立てたstretch 64bitにlxc(これもstretch)
を何度も入れて試す。
一応動くものができたっぽいのでまとめておく。
なお全部ゼロから作ったというより、ほとんどは
別のクラウドサービスで試したファイルの使い回し
だったりする。
VPSはグローバルIPv4アドレスを一つ借りている。lxcのために、
一種のNATにする。
ホストの/etc/network/interfaces編集。
auto lo iface lo inet loopback auto br0 iface br0 inet static address $GROBAL_IP netmask $MASK gateway $GW bridge_ports ens3 iface br0 inet static address $PRIVATE_IP netmask $24BIT_MASK
/proc/sys/net/ipv4/ip_forwardを1にする。
iptablesのnatは次のようになった。
Chain PREROUTING (policy ACCEPT 74751 packets, 3257K bytes) pkts bytes target prot opt in out source destination 18 748 DNAT tcp -- br0 * 0.0.0.0/0 $HOST_IP tcp dpt:80 to:$LXC_HOST:80 11 460 DNAT tcp -- br0 * 0.0.0.0/0 $HOST_IP tcp dpt:443 to:$LXC_HOST:443 16 904 DNAT tcp -- br0 * 0.0.0.0/0 $HOST_IP tcp dpt:25 to:$LXC_HOST:25 14 840 DNAT tcp -- br0 * 0.0.0.0/0 $HOST_IP tcp dpt:587 to:$LXC_HOST:587 10 600 DNAT tcp -- br0 * 0.0.0.0/0 $HOST_IP tcp dpt:995 to:$LXC_HOST:995 Chain POSTROUTING (policy ACCEPT 115 packets, 7009 bytes) pkts bytes target prot opt in out source destination 723 47262 MASQUERADE all -- * br0 $LXC_NET/24 0.0.0.0/0
LXC。lxc-create -n NAME -t DISTRO で作って、 configにネットワークを追加。
lxc.network.type = veth lxc.network.link = br0 lxc.network.flags = up lxc.network.hwaddr = XX:XX:XX:XX:XX:XX lxc.network.ipv4 = PRIVATE_IPv4_ADDR lxc.network.ipv4.gateway = PRIVATE_IPv4_GW
で、肝心のLXCコンテナの中身の方。
ネットワークの設定は、こちらの方ではなしでもいいようだ。
まず/etc/localtimeをAsia/Tokyoにし、メール送受信の
ユーザを作った。面倒なのでシステムアカウント。
# LANG=C apt-get install vim-tiny lv less nmap tcpdump rsync rsyslog nginx bsdcertbot postfix dovecot-pop3d opendkim opendkim-tools iputils-ping -y
デフォルトではpingもない。rsyslogがないとログが記録されない。
LANG=C でないとPostfixのインストールが毎回失敗したり
する。letsencryptなど省略。
postfix、dovecot、opendkimは一旦systemctl stop しておいた。
/etc/dkimkeysは opendkimユーザ、グループが所有していた
が、どうもうまくいかない。中身もろともroot:rootに変える。
opendkimグループにpostfixを追加した。
$ opendkim-genkey -s SELECTOR_NAME -b 1024 -d DOMAIN.TLD
利用しているDNSサーバはデフォルトの鍵長(2048ビット)がTXT
レコードに収まらないようだ。
ダブルクォートで括れ、というTipsも聞いたが、結局うまくいかず
1024ビットで我慢。
# grep -v "^$\|^#" /etc/opendkim.conf Syslog yes UMask 000 Domain kuzuore.net KeyFile /etc/dkimkeys/DOMAINKEY_NAME Selector SELECTOR_NAME Canonicalization relaxed/simple Mode sv Socket inet:8891@localhost PidFile /var/run/opendkim/opendkim.pid OversignHeaders From TrustAnchorFile /usr/share/dns/root.key UserID opendkim
postfixの関係部分はこれくらい。
milter_default_action = accept milter_protocol = 2 non_smtpd_milters = inet:localhost:8891 smtpd_milters=inet:127.0.0.1:8891
MUAより送信したメールのヘッダに、DKIM-Signature: が付いていることを確認。 gmailも'PASS'(シングル クォーテーションが幾分気になった)。
Authentication-Results: mx.google.com; dkim=pass header.i=@kuzuore.net header.s=myselector header.b=G6bjuE4V; spf=pass (google.com: domain of UUUUUUU@kuzuore.net designates YYY.YYY.YYY.YYY as permitted sender) smtp.mailfrom=UUUUUUU@kuzuore.net
mail(1)などで内部から送信したメールには、
まだ付けられないでいる。
また、立ち上げがうまくないと、メール送受信はできてもDIMG-Signatureが
付かなかったりする。
Feb 6 11:33:59 $LXC_HOST postfix/submission/smtpd[10503]: warning: connect to Milter service inet:127.0.0.1:8891: Connection refused
ststemctlを色々と叩いたり lxc-stop lxc-startしたりしていた。 上のエラーの後、設定を変えてもいないのに、無事に通るようになった。
inetを少し変えて、本番サーバにもほぼ同じ設定。メールを投げ合って みたところ、とりあえずは動いてる、らしい。
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。