背景
家のインターネット回線をso-net光からNuroへ乗り換えた。結果的にすごく満足はしているけど、色々調べてもメール送信用サーバの設定方法がどこにもない。Nuroもso-net系なので設定方法は同じかなと思うけど、アカウントがないからな。。
自宅サーバのubuntuに直接smtpサーバを構築することも試してみたけど、SPFやDKIMの設定に限界があったので諦め、いい方法を探したところ、一部制約はあるけどgmailのsmtpを利用することにした。
やったこと
postfixとsaslを利用してgmailのsmtpサーバへrelayする方法を以下に記載する。
- メールの受信やその他の設定は何も行っていない。
- gmailのsmtpサーバへrelayすることしか行っていない
- Nuroのプライベートネットワークは 192.168.0.0/24である
- OSはubuntu 16.04を利用
パッケージの確認とインストール
必要なパッケージは以下の3つ。
- postfix
- libsasls-modules
- ca-certificates
postfixとlibsaslsは「mailutils」に含まれているので以下のコマンドでインストールしよう。
sudo apt-get update
sudo apt-get install mailutils ca-certificates
main.cfの設定
googleのsmtpサーバへrelayするための最低限の設定しかしないので以下の項目で充分。
- relayhost : relay対象サーバを指定する
- smtpsaslauth_enable : SMTPのSASL認証を有効かする
- smtpsaslpassword_maps : SMTP接続時のパスワードを指定する
- smtpsaslsecurity_options : 認証オプションを指定する(外部に公開しないので問題ないけど念のためnoanonymousを指定して匿名ユーザのアクセスを拒否する)
- smtpusetls : TLS暗号化を行う
- smtptlsCAfile : TLS暗号化に利用するCAファイルを指定する
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = soday
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = /etc/mailname, $myhostnamex, soday.net, localhost.localdomain, localhost
#relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
### Gmail用smtp設定
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_password
smtp_sasl_security_options = noanonymous
smtp_use_tls = yes
smtp_tls_CAfile = /etc/postfix/cacert.pem
Gmailのsmtpアカウント設定
main.cfの「smtp_sasl_password_maps」で指定してファイルを以下の形式で作成する。
[smtp.gmail.com]:587 アカウント名@gmail.com:パスワード
保存したファイルをpostmapコマンドでdbファイルを作成する
sudo postmap /etc/postfix/sasl/sasl_password
TLSのCAファイル配置
cp /etc/ssl/certs/Thawte_Premium_Server_CA.pem /etc/postfix/cacert.pem
Thawte_Premium_Server_CA.pemファイルが存在しない場合はgoogleで検索するとすぐ出てくるのでダウンロードしてファイルを作ってあげよう。
Thawte_Premium_Server_CA.pemファイルを探すのが面倒だったので追記しました。- 2019-07-05
-----BEGIN CERTIFICATE-----
MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE
AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl
ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT
AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU
VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ
cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh
Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/
qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm
SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t
UCemDaYj+bvLpgcUQg==
-----END CERTIFICATE-----
postfixの起動
service postfix start
設定が終わったのでpostfixを起動しよう。/var/log/mail.logを確認し、エラーが出てないことを確認したほうが良い。エラーがあったら原因を調べて対応する。
参考文書
'IT이야기 > 리눅스' 카테고리의 다른 글
우분투 데스크탑 리모트 접속 환경 구축 (0) | 2020.07.31 |
---|---|
ubuntuでdockerを使いgitlabを起動した (0) | 2020.07.30 |
vi コマンドまとめ (0) | 2020.07.30 |
vmstat 명령어 정리 (0) | 2020.07.30 |
straceを利用したdebugging 7つのサンプル (0) | 2020.07.30 |
댓글