メールサーバー新規構築時等、メールアカウント作成作業って単純だけど手間ですよね・・
メールアカウント数が10とか20とかならまだしも1000とかあったら地獄!しかもメールアカウント作成に加え、パスワードの設定もしなければいけません。
企業や自治体のメールサーバ運用業務を実施していると、年度明けに新しいアカウントの作成がドカッと依頼され、めんどくせっと思うことがしばしばです。
毎回毎回作成するのも大変なので、色々しらべてbashスクリプトを作成してみました。同じ悩みをお持ちの方の解決方法になれば幸いです。
実施した環境
OS:Centos7(Centos6でも動作確認ずみ)
postfix Version:2.10.1
dovecot Version:2.2.10
基本的にはただのユーザ作成のスクリプトなので上記環境は関係ないですが、とりあえず記載しておきます。
メールアカウント作成方法
メールアカウント作成は基本的には(ヴァーチャルドメイン等を利用していない場合)はOSのユーザを作成する作業となります。
また、作成したユーザに対してパスワードを付与してあげないといけません。なので実施するコマンドは下記となります。
ユーザ作成 useradd -d /home/新ユーザ名 -s /sbin/nologin 新ユーザ名 ※"-d"オプションでホームディレクトリを決め、"-s /sbin/nologin"でサーバへは ログインできないユーザを作成しています。 作成したユーザにパスワードを付与 passwd 新ユーザ名
上記のコマンドを自動でアカウント分実行しましょうというのが下記のスクリプトになります。
メールアカウント作成のbashスクリプト
bashスクリプトとユーザ情報を記載した2つのファイルで実施します。
bashファイルの中身は下記となります。
”list.txt”に記載されたユーザ情報を読み込んでコマンド実行。終わったら次のユーザへという感じです。
vi mailUserAdd.sh #!/usr/bin/bash numline=1 cat list.txt | while read line do USERNAME=`echo ${line} | awk '{print $1}'` PASSWORD=`echo ${line} | awk '{print $2}'` useradd -d /home/${USERNAME} -s /sbin/nologin ${USERNAME} echo "${PASSWORD}" | passwd --stdin ${USERNAME} numline=$((numline + 1)) done
※初めの”/usr/bin/bash”は環境によって変わる可能性があります。サーバ上で”which bash”コマンドを実行して調べることができます。”which bash”コマンドで出力された結果にて適宜スクリプトを修正して下さい。
[root@localhost ~]# which bash /usr/bin/bash
ユーザ情報を記載したファイルは以下のフォーマットで記載します。ユーザ名とパスワードを羅列していくだけです。
※ユーザ名とパスワードの間は半角スペースです。
vi list.txt username1 pass username2 pass ・ ・ ・ ・ ・
あとは実行するだけです。
# sh -x./mailUserAdd.sh
※”ーx”をつけるとスクリプトの動作を出力することができます。もしユーザ名の被りなどで失敗した場合はエラー内容を確認してみて下さい。
あまり頻繁に利用するものでは無いかもしれませんがユーザ作成をスクリプト化するだけで
業務を圧縮することができると思いますのでぜひお試し下さい!
以上、皆さんのお役にたてれば幸いです。