ここではpostfixの/etc/postfix/main.cfにてmynetworks と mynetworks_style は共に未定義である。
[root@c ~]# grep -e "^#mynetworks" -e "^##mynetworks_style" /etc/postfix/main.cf
#mynetworks_style = class
#mynetworks_style = subnet
#mynetworks_style = host
#mynetworks = 168.100.189.0/28, 127.0.0.0/8
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
[root@c ~]#そのため、このメールサーバが所属するドメインなら無認証でメールを送信できる(メールサーバを踏み台にして外にメールを出せる)
[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 ~]#この許諾範囲を制限させ、smtp認証でしかメールを送信できなくしてみる。加えてSSLによる保護と暗号化されたパスワード認証を施してみる。そうすることで外出先からもメールを送信できるようになる。(ルータの調整は必要)
mynetworks行を追加します
[root@c ~]# vi /etc/postfix/main.cf
:
mynetworks = 127.0.0.0/8
[root@c ~]#確認
[root@c postfix]# postconf | grep ^mynetworks
mynetworks = 127.0.0.0/8
mynetworks_style = subnet
[root@c postfix]#これでローカルホストのみが無認証でメールを送信できる。
っが、smtpd_sasl_auth_enableを有効にして、smtpd_sasl_security_optionsに「noanonymous」を加えれば全て認証必須になる
[root@c ~]# vi /etc/postfix/main.cf
:
#mynetworks = 127.0.0.0/8
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous, noplaintext
[root@c ~]#[root@c ~]# yum install cyrus-imapdここで分岐点がある
1.の場合、pam経由でLinuxログインに使用するパスワードをsmtpの認証用パスワードとして使用できる。
なので、ldapからのパスワードを使用することにもなるのだが
その設定方法は、まず下記のpwcheck_method:にて「saslauthd」を指定します。
そして認証方式を平文で通すなら「plain」「login」を指定して、暗号化されたパスワード認証も扱うなら「cram-md5」も追加します
[root@c ~]# vi /etc/sasl2/smtpd.conf
pwcheck_method: saslauthd
mech_list: cram-md5 plain login
[root@c ~]#次に、pam経由で認証を行うように/etc/sysconfig/saslauthdを確認します。
[root@c ~]# vi /etc/sysconfig/saslauthd
SOCKETDIR=/run/saslauthd
MECH=pam
FLAGS=
[root@c ~]#認証デーモンsaslauthdを稼動させ、Linuxアカウントでsmtp認証が可能かを確認する
[root@c ~]# systemctl start saslauthd
[root@c ~]# /usr/sbin/testsaslauthd -u illya -p xxxxxxxxxxxxxxxxxx
0: OK "Success."
[root@c ~]#
2.別途独自のパスワードファイルでsmtp認証のパスワードを管理するには/etc/sasl2/smtpd.confの
「saslauthd」を「auxprop」に変更します。
[root@c ~]# vi /etc/sasl2/smtpd.conf
pwcheck_method: auxprop
mech_list: plain login
[root@c ~]#そして、メールアカウントごとのsmtp認証用パスワードを設置します。下記はsupport<_at_>sysosa.jpのパスワードを定義してます。
これによってsmtp認証用パスワードファイル「/etc/sasldb2」が作成される。
[root@c ~]# saslpasswd2 -u sysosa.jp support
Password:
Again (for verification):
[root@c ~]#そのまま作成すると
[root@c ~]# ls -l /etc/sasldb2
-rw-r----- 1 root root 12288 3月 30 20:02 /etc/sasldb2
[root@c ~]#と、smtp認証用パスワードファイルはrootユーザしか読めなくて、postfix稼動ユーザ「postfix」には読めない。なので
[root@c ~]# chgrp postfix /etc/sasldb2
[root@c ~]# ls -l /etc/sasldb2
-rw-r----- 1 root postfix 12288 3月 30 20:02 /etc/sasldb2
[root@c ~]#とグループ所有者を変更する。
現在登録されているユーザの確認は下記のようにして行う(LANG環境変数によっては文字化けが発生)
[root@c ~]# LANG=C sasldblistusers2
support@sysosa.jp: userPassword
[root@c ~]#留意
postfixの運用に依存するが、Linuxアカウントでメールを運用する場合、OSのpamからsmtp-auth、dovecot(imap/pop)認証が使える。
なので単一ドメインで運用するならLinuxパースワードがsmtp認証、メール取得パスワードにもなれる。パスワード一元化。
だが、VirtualMailbox構成をとるとsmtp認証向けのパスワード管理機構、dovecot(imap/pop)認証向けのパスワード管理と分散される。
これらを統合してみるmail/samba
smtp認証用のパスワードが準備できたので、これをpostfixに反映させる。
/etc/postfix/main.cfの最後当たりに下記を加え、postfixを再起動させる
[root@c ~]# vi /etc/postfix/main.cf
:
smtpd_sasl_local_domain = $mydomain
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
broken_sasl_auth_clients = yes
[root@c ~]# systemctl restart postfixVirtualMailbox構成の際には「smtpd_sasl_local_domain」は未定義でいいみたい
認証中の通信を暗号化させるには/etc/postfix/main.cfの最後に下記を追記する。
暗号通信に使用される証明書はmail/dovecot#ye7dbf8aと同じで構わない。
[root@c ~]# vi /etc/postfix/main.cf
:
smtpd_use_tls = yes
smtpd_tls_loglevel = 1
smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem
smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem
[root@c ~]# |