(57) Almalinux8にsendmailをインストール
sendmailサーバーソフトをインストールします。
# dnf install sendmail sendmail-cf
システムのメイルサーバーとしてpostfixが動いていると困るので、一応ストップ操作します。
# systemctl stop postfix.sevice
# systemctl disable postfix.sevice
メイルサーバーのsmtpプロトコルが使うポートを開きます。
# firewall-cmd --list-all-zones (開いているポートをチェック)
# firewall-cmd --add-service=smtp --zone=public --permanent
# firewall-cmd --list-all-zones (開いているポートをチェック)
public (active)
target: default
icmp-block-inversion: no
interfaces: ens192
sources:
services: cockpit dhcpv6-client smtp ssh ← smtpが追加されていればOK
sendmail関係のファイルは/etc/mail ディレクトリ以下にあります。
ここではごく基本的な設定方法のみ記載します。詳細はsendmail本を読んでください。
# cd /etc/mail
# ls
Makefile aliasesdb-stamp helpfile mailertable.db sendmail.mc submit.mc virtusertable.db
access domaintable local-host-names make spamassassin trusted-users
access.db domaintable.db mailertable sendmail.cf submit.cf virtusertable
・中継を許す宛先ドメインを登録します。
(例えばこのサーバーをmailtest.totsu.co.jp 192.168.20.10とします)
# vi access
# By default we allow relaying from localhost...
Connect:localhost.localdomain RELAY
Connect:localhost RELAY
Connect:127.0.0.1 RELAY
Connect:192.168.20.10 RELAY
Connect:mailtest.totsu.co.jp RELAY
・自分のホスト名や別名を登録します。
1行に1個の別名を記述します。
# vi local-host-names
localhost
localhost.localdomain
mailtest
mailtest.totsu.co.jp
・sendmailの設定をします。
# vi sendmail.mc
Dwmailtest ← Dwのあとにホスト名の記述を追加します
Dmtotsu.co.jp ← Dmのあとにドメイン名の記述を追加します
define(`confDOMAIN_NAME', `mailtest.totsu.co.jp')dnl ← 念のためにこのマシンのFQDN記述を追加します。
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl ← 自分のアドレスしか見ていないと送受ができないので削除します
↓
DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
LOCAL_DOMAIN(`localhost.localdomain')dnl スペースで区切って別名を設定できます。
↓
LOCAL_DOMAIN(`localhost.localdomain mailtest.totsu.co.jp')dnl
dnl MASQUERADE_AS(`mydomain.com')dnl From:のドメイン名を書き換えられます。
↓
MASQUERADE_AS(`totsu.co.jp')dnl
dnl FEATURE(masquerade_envelope)dnl エンベロープ送信者のドメイン名も書き換えます。
↓
FEATURE(masquerade_envelope)dnl
dnl MASQUERADE_DOMAIN(localhost)dnl localhostとなっているドメインは書き換えます。
↓
MASQUERADE_DOMAIN(localhost)dnl
dnl MASQUERADE_DOMAIN(localhost.localdomain)dnl
↓
MASQUERADE_DOMAIN(localhost.localdomain)dnl
古い設定を削除します。
# make clean
# ls
Makefile domaintable local-host-names make sendmail.mc submit.cf trusted-users
access helpfile mailertable sendmail.cf spamassassin submit.mc virtusertable
# make all ← sendmail.cfファイルその他を生成します。
# ls
Makefile domaintable local-host-names make sendmail.mc submit.mc virtusertable.db
access domaintable.db mailertable sendmail.cf spamassassin trusted-users
access.db helpfile mailertable.db sendmail.cf.bak submit.cf virtusertable
sendmailの最小mailtest限の動作チェックをしてみます
# sendmail -bt -C/etc/mail/sendmail.cf
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> /tryflags er
> /parse root@mailtest.totsu.co.jp (このサーバーのローカルユーザーのメイルアドレスを入れて、ローカルユーザーだと認識できるか?)
mailer local, user root
> /parse root (このサーバーのローカルユーザーのメイルアドレスの名前だけを入れて、ローカルユーザーだと認識できるか?)
mailer local, user root
> /tryflags er
> /parse test1@totsusangyo.com (よそのドメインのユーザーのメイルアドレスを入れて、外に送らなければいけないことを認識できるか?)
Cracked address = $g
Parsing envelope recipient address
mailer esmtp, host totsusangyo.com., user test1@totsusangyo.com
> /tryflags es
> /try smtp root
Trying envelope sender address sysinstall for mailer smtp
Rcode = 0, addr = root@mailtest.totsu.co.jp
(このテストから抜けるにはCtrl + d を入力します)
# systemctl start sendmail
mailコマンドを使いたいのでmailxを追加インストールします。
# dnf install mailx
なお、RedHat EL9などではmailx(mailコマンド)が無くなって、代わりにs-nailを使うようになりました。
その場合は、下記のように追加インストールしてください。
# dnf install s-nail
使い方は下記のmailコマンドと同じです。
mailはs-nailにエイリアスされているのでmailと入力しても動きます。
# mail testuser@totsusangyo.com (実際に外のメイルアドレスにメイルを送って、送られるかテストします)
subjectやメイル本文を入力してからCtrl + dを入力するとメイルが送付されます。
sendmailが自動起動されるように設定します。
# systemctl enable sendmail
メイル送付先のaliasesを設定したい場合は下記ファイルで行います。
# vi /etc/aliases
このマシンのrootユーザー宛のメイルを特定のアドレスに転送したい場合は最下行を修正します。
# Person who should get root's mail
#root: marc
↓
root: test1@totsusangyo.com
修正したら内容を反映させます。
# newaliases
なお、上記の設定はとりあえずメイルが送れるようにするための簡易設定です。
本格的にメイルサーバーを立ち上げたい場合はsendmailの参考書を参照してちゃんとした設定をしてください。