
Ubuntu日本語フォーラム
ログインしていません。
Ubuntu 18.04でPostfixの設定がうまく動かず困っています。
apt-get install postfix
にてインストールし、各種設定をしてポート25では動作しましたが587や465で動かせなかったので、いろいろ設定をいじっているうちにポート25すら開放されなくなりました。
なので一旦再インストールして再度設定してもポート25も開放されません。
ふと気づいて、
postfix -c /etc/postfix start
と手動起動するとポート25が開放されました。
「service postfix start」で/etc/postfix/main.cfを読み込ませたいのですが、どうしたら良いでしょうか?
設定は途中なので簡単にしかいれていません。
/etc/servicesには25、587、465共に入っています。
また、service postfix restartした時はsyslogには以下のログしか残りません。
Aug 2 23:16:36 puni systemd[1]: Starting Postfix Mail Transport Agent...
Aug 2 23:16:36 puni systemd[1]: Started Postfix Mail Transport Agent.
よろしくお願いいたしますm(_ _)m
以下、postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
compatibility_level = 2
home_mailbox = Maildir/
inet_interfaces = all
inet_protocols = ipv4
mailbox_size_limit = 0
mydestination = $myhostname, hogehoge.com, huga, localhost.localdomain, localhost
myhostname = hogehoge.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.15.0/24
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost =
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
以下、master.cf
smtp inet n - y - - smtpd
submission inet n - y - - smtpd
-o smtpd_sasl_auth_enable=yes
pickup unix n - y 60 1 pickup
cleanup unix n - y - 0 cleanup
qmgr unix n - n 300 1 qmgr
tlsmgr unix - - y 1000? 1 tlsmgr
rewrite unix - - y - - trivial-rewrite
bounce unix - - y - 0 bounce
defer unix - - y - 0 bounce
trace unix - - y - 0 bounce
verify unix - - y - 1 verify
flush unix n - y 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - y - - smtp
relay unix - - y - - smtp
-o syslog_name=postfix/$service_name
showq unix n - y - - showq
error unix - - y - - error
retry unix - - y - - error
discard unix - - y - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - y - - lmtp
anvil unix - - y - 1 anvil
scache unix - - y - 1 scache
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail unix - n n - - pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - pipe
flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix - n n - 2 pipe
flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman unix - n n - - pipe
flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
${nexthop} ${user}
オフライン
18.04 で Postfix を開始したとき、syslog には以下のように、systemd による Started、Starting のログよりも前に Postfix 自身からのログが出力されている可能性があります。
また、Postfix 自身からのログは /var/log/mail.log にも出力されるので、そちらに何か記録されていないでしょうか。
Aug 2 21:55:26 echizen systemd[1]: Starting Postfix Mail Transport Agent (instance -)... Aug 2 21:55:27 echizen postfix/postfix-script[75376]: starting the Postfix mail system Aug 2 21:55:27 echizen postfix/master[75378]: daemon started -- version 3.3.0, configuration /etc/postfix Aug 2 21:55:27 echizen systemd[1]: Started Postfix Mail Transport Agent (instance -). Aug 2 21:55:27 echizen systemd[1]: Starting Postfix Mail Transport Agent... Aug 2 21:55:27 echizen systemd[1]: Started Postfix Mail Transport Agent.
Postfix の設定は /etc/postfix 以下だけでほぼ完結するはずです。
このディレクトリ以外を触るのは、他のプログラムとの連携のためというのがほとんどです。
Postfix を完全に削除して最初からやりなおしたいのなら、sudo apt --purge remove postfix としてから念のために /etc/postfix ディレクトリをその中身ごと削除して、その後に sudo apt install postfix するのが定番です。
オフライン
ry 様
お返事ありがとうございます。
/var/log/mail.logには再起動時には新しいログが入りません。
また、やり方が少々古いですが、
sudo apt-get remove --purge postfix
sudo apt-get install postfix
での再インストールは試していたのですが、変化なしでした。
おっしゃる様に
sudo apt --purge remove postfix
sudo apt install postfix
でも試してみたいと思います。
ちょっと朝は時間がないので、今晩にでもご報告させていただきたいと思います。
オフライン
apt-get と apt は動作としては同じです。
sudo apt --purge remove postfix としたのなら再インストールの手順として特に問題は無いはずです。
後気になる点といえば、単にこの掲示板の仕様と思いますが master.cf の行頭が揃っている点ですね。
継続行は一文字以上の空白文字から始まらないといけないのですが。
行頭空白文字などの書式が大事なときは [code]...[/code] で括って投稿するようにしてください。(ここでは全角角括弧で例示していますが、正しくは半角角括弧を使います)
[code]
smtp inet n - - - - smtpd
#smtp inet n - - - 1 postscreen
#smtpd pass - - - - - smtpd
#dnsblog unix - - - - 0 dnsblog
#tlsproxy unix - - - - 0 tlsproxy
submission inet n - - - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_reject_unlisted_recipient=no
-o smtpd_client_restrictions=$mua_client_restrictions
-o smtpd_helo_restrictions=$mua_helo_restrictions
-o smtpd_sender_restrictions=$mua_sender_restrictions
-o smtpd_recipient_restrictions=
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
[/code]
↓ ↓
smtp inet n - - - - smtpd #smtp inet n - - - 1 postscreen #smtpd pass - - - - - smtpd #dnsblog unix - - - - 0 dnsblog #tlsproxy unix - - - - 0 tlsproxy submission inet n - - - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_reject_unlisted_recipient=no -o smtpd_client_restrictions=$mua_client_restrictions -o smtpd_helo_restrictions=$mua_helo_restrictions -o smtpd_sender_restrictions=$mua_sender_restrictions -o smtpd_recipient_restrictions= -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING
....と、投稿前のプレビューで気付いたけど、行頭の空白文字は削除されないのね。
ならば最初の master.cf はやはりおかしいのでは。
オフライン
ry 様、引き続きありがとうございます。
このフォーラムの書き方がよく分かっていないまま投稿しており申し訳ありません。
master.cfですが、行頭が整っている事については、ちょっと記憶が定かではありませんが、手動で一行ずつコピペして貼り付けましたので、その影響と思われます。
apt removeやapt installで再インストールした後の設定も同様の症状で、
#service postfix start
で起動したときはポート25が閉じたままで、telnetも失敗ですが、
#postfix -c /etc/postfix start
で起動したときはポート25は開いていてtelnetも成功します。
で、その状態で現在のmaster.cfでコメント行をviにて削除したものが以下になります。
root@hoge:~# cat /etc/postfix/master.cf smtp inet n - y - - smtpd pickup unix n - y 60 1 pickup cleanup unix n - y - 0 cleanup qmgr unix n - n 300 1 qmgr tlsmgr unix - - y 1000? 1 tlsmgr rewrite unix - - y - - trivial-rewrite bounce unix - - y - 0 bounce defer unix - - y - 0 bounce trace unix - - y - 0 bounce verify unix - - y - 1 verify flush unix n - y 1000? 0 flush proxymap unix - - n - - proxymap proxywrite unix - - n - 1 proxymap smtp unix - - y - - smtp relay unix - - y - - smtp -o syslog_name=postfix/$service_name showq unix n - y - - showq error unix - - y - - error retry unix - - y - - error discard unix - - y - - discard local unix - n n - - local virtual unix - n n - - virtual lmtp unix - - y - - lmtp anvil unix - - y - 1 anvil scache unix - - y - 1 scache maildrop unix - n n - - pipe flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient} uucp unix - n n - - pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient) ifmail unix - n n - - pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) bsmtp unix - n n - - pipe flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient scalemail-backend unix - n n - 2 pipe flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension} mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}
度々お手数お掛け致しますがご教授いただければ幸いです。
オフライン
本件とは無関係ですが、今の ubuntu は systemd を使っているので service postfix start ではなく systemctl start postfix が推奨です。
で、sudo systemctl start postfix (service postfix start) の前後で、ps ax | grep postfix と sudo ss -natp | grep master を実行した結果と、/var/log/syslog の該当箇所の内容はどうなっているでしょうか。
また、postfix -c /etc/postfix start の前後で、同様に ps ax | grep postfix と sudo ss -natp | grep master を実行した結果と、/var/log/syslog の該当箇所の内容はどうなっているでしょうか。
あと、sudo postfix -c /etc/postfix check の結果も提示ください。
オフライン
ry 様
systemctl start postfix
で起動したところ、どうやら/etc/postfixのコンフィグを読み込んでくれた様で、ポートが開きました。
serviceでの起動は推奨ではなくなった様ですので、メンテ不足で起きたバグの様なものなのかもしれません。
その他設定も実施して動作も確認できました。
もともとはservice postfix startでも起動できていたのに、できなくなった理由がわかりませんが、結果として起動コマンドを変えるだけで解決するとは・・・。お騒がせしました。
ちなみに現在もservice postfix startでは正常起動はしませんが、再度systemctlで起動すると復旧します。お付き合い頂きありがとうございました。大変助かりました。
オフライン
とりあえず、意図通りに動いたということでおめでとうございます。
あまり追求すると沼にハマりそうですが systemctl が使える環境のとき、service コマンドはその中で単に systemctl を呼び出しているだけなので動作に差異はないはずです。
ですから service postfix start と systemctl start postfix で Postfix の起動動作に違いは無いはずなのですが.....。
とりあえずは、動いたと言うことでよしとしましょう。
オフライン
ry 様
シェルスクリプトの細かい中身は理解できませんが、確かに/usr/sbin/serviceを覗いてみると、systemctlを呼び出している様ですね。
しかし無事動きましたのでこれで良しとさせていただきます。
ありがとうございました。
オフライン