みなさんこんにちは。
ディーネットの浜田です。
自分に影響のある花粉症の時期が過ぎたのかわからないので未だにマスクを外せない日々が続きます。
今回はqmailadminで1文字のメールアカウントを作成する方法についてです。
1文字のメールアカウントを作る
基本的にqmailadminで1文字のメールアカウントを作成しようとすると、以下のように怒られて作成できません。
コマンドラインから実行しても怒られて作成できません
# /home/vpopmail/bin/vadduser x@mail-test.denet.net passwd
Error: Illegal username
どうしても1文字のメールアカウントを作成したい!という場合はどうすればいいか。
qmailadminはvpopmailを利用してアカウントを作成しているので、こちらのスクリプトを修正してあげれば作成できるようになります。
今回テストを行った環境は
・CentOS7系
・vpopmailを導入した際のソースが残っていること (今回の場合は/usr/local/src/vpopmail-5.4.33)
vi vpopmail.c
/*
* Add a virtual domain user
*/
int vadduser( char *username, char *domain, char *password, char *gecos,
int apop )
~ 中略 ~
#ifdef USERS_BIG_DIR
if ( strlen(username) == 1 ) return(VA_ILLEGAL_USERNAME);
#endif
上記はvpopmailスクリプトにあるユーザ追加コマンド(vadduser)についての記述の一部です。
if文のところを見ると、入力されたユーザ名が1文字であればエラーを返す設定になっていますので、
if ( strlen(username) == 0 ) return(VA_ILLEGAL_USERNAME);
こちらを上記のように変えればオッケーです。
また、パスワード変更(vpasswd)、容量制限の変更(vsetuserquota)についての記述でも同様の1文字制限がありますので適宜変更して下さい。
変更後にコンパイルを実行すれば完了です。
コマンドラインでも正常に作成できています。
# /home/vpopmail/bin/vadduser y@mail-test.denet.net passwd
# ll /home/vpopmail/domains/mail-test.denet.net/
合計 8
drwx------ 3 vpopmail vchkpw 37 4月 24 15:33 postmaster
-rw------- 1 vpopmail vchkpw 315 4月 25 15:05 vpasswd
-rw------- 1 vpopmail vchkpw 2429 4月 25 15:05 vpasswd.cdb
drwx------ 3 vpopmail vchkpw 37 4月 25 15:03 x
drwx------ 3 vpopmail vchkpw 37 4月 25 15:05 y
何故1文字のアカウントが作れない?
しかし、何故で1文字のメールアカウントが作成できないのか。
qmailではメールアカウント数100毎に「0」~「9」、「A」~「Z」という数字もしくはアルファベット1文字のディレクトリが作成され、そのディレクトリに100件ずつメールアカウントが保存されます。
一文字のメールアカウントを作成した場合、上記のディレクトリと名前が被ってしまうので不具合が生じる可能性が有ります。
そのため、方法を紹介した後で述べるのもなんですが、基本的には1文字のアカウントは作成しない方針でvpopmailを利用したほうがいいでしょう。
では、今回はこの辺で。