100個のアカウントを一挙につくりすべてのメールを1つのアカウントに転送させたい方法

このQ&Aのポイント
  • CentOS4のレンタルサーバ(VPS)上で、100個のアカウントを一括で作成し、すべてのメールを1つのアカウントに転送させたい方法を教えてください。
  • PHPやシェルスクリプトを使用して、100個のアカウントを作成し、それぞれのメールをエイリアスで1つのアカウントに転送する方法を教えてください。
  • adduserコマンドやwebminを使用せずに、100個のアカウントを作成し、メールをすべて1つのアカウントに転送する解決策を教えてください。
回答を見る
  • ベストアンサー

100個のアカウントを一挙につくりすべてのメールを1つのアカウントに転送させたい

CentOS4をレンタルサーバ(VPS)上で運用しており、 (バーチャルなroot権限もあります) PHP(mod_phpおよびcli_php、いずれもバージョン5)が入ってます。 また、シェルスクリプトは一通り使えますが、 自分の能力がほとんどゼロです。 (PHPならなんとか) で、やりたいことがあるのですが、 fgsdfjsd gdfiosfgsd sdfohfds sdfhfsd fsdfshdj (中略) jgfjhgdfk dfsfjsdjfdsklf というランダムなアカウントを100個つくり (できれば、SSHアクセスも可能にしたい)、 さらにそれぞれのメアドをすべて、エイリアス(sendmail使ってます)で、 hoge というアカウントに転送させたいと思っています。 これをadduserコマンドやwebminで1つ1つ設定するのは大変なので、 いい解決策はないでしょうか? cshなどほとんど無知ですが、 無知ながらも実現できればかまいません。 PHP5なら、特に、問題はありません。 どなたか解決方法をおわかりのかた、お教えいただければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • umota
  • ベストアンサー率46% (150/324)
回答No.7

ANo.6 のスクリプトは newusers で作成した各ホームディレクトリに /etc/skel のファイルをコピーするものです。 ユーザを削除する必要はありません。 ログイン権限を与えていなければ(/sbin/nologin)ANo.6 のスクリプトは不用です。 (因にホームディレクトリも削除する場合は userdel -r ユーザ名、 スクリプトで一気に削除も可) スクリプト中の "ファイル" はnewusers で使用したファイル名(グループIDを省略していないこと)に置き換える。 スクリプトファイルを作成、実行権を与えて(chmod u+x スクリプトファイル)実行(./スクリプトファイル) コマンドから実行したければ 2行目以降を改行を ; に置き換えて一行で入力 ls に -a オプションをつければ(ls -a /etc/skel)何がコピーされるかわかるので一個ずつコピーしても良い。 確認は ls -l /home/ユーザ名/.[a-z,A-Z] で . から始まる隠しファイルの存在とパーミッション を見る(ls -al /home/ユーザ名 でも良い)。 以上 root 権限で行なう。 # [技術者向] ではここまで説明する必要はないと思うのだが...

daisuke_dm
質問者

お礼

詳しいご開設ありがとうございます。 大変参考になりました。 いろいろ試してみたいと想います。 本当にありがとうございました。

その他の回答 (6)

  • umota
  • ベストアンサー率46% (150/324)
回答No.6

ANo.5 のリンク先のスクリプトは変ですね。 こちらをどうぞ ( ` は [Shift]+[@] です) #!/bin/sh for user in `cut -d: -f1 ファイル` do cp /etc/skel/.[a-z,A-Z]* /home/$user chown -R $user /home/$user chgrp -R `cat ファイル|grep $user|cut -d: -f4` /home/$user done

daisuke_dm
質問者

お礼

再度ご回答ありがとうございます。 なお、newusersで100個アカウントを設定してしまったので、 これをいったん削除して、お教えいただいたスクリプトを実行すべきかと思うのですが、どうしたらよいでしょうか? userdelしまくれば問題ないでしょうか? お忙しい中恐縮ですが、 以上よろしくお願い申し上げます。

  • umota
  • ベストアンサー率46% (150/324)
回答No.5

newusers では ホームディレクトリに /etc/skel 以下のファイルがコピーされません。 ここに 模範Q&A がありました。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=2848&forum=10&2

  • umota
  • ベストアンサー率46% (150/324)
回答No.4

newusers を使うとパスワード付きのユーザをまとめて登録できますよ。

daisuke_dm
質問者

お礼

ご回答ありがとうございました。成功しました。 なお、お聞きしたいのですが、 これは、adduserコマンドや、Webminから追加した状態と、全く同じなのでしょうか? 調べてたら、どこかのページで、若干違う(自分の勘違いかも)と書いてあったものでした。 お手すきでしたら、お教え願えれば幸いです。 以上、よろしくお願い申し上げます。

noname#136147
noname#136147
回答No.3

#2です。 > 一応、確認させていただきたいのですが、手順としては、 > <?php > (1)なんかしらロックファイルを作る > (2)新しい/etc/aliasesを別名(/etc/aliases_next とかで)でつくる > (3)mv /etc/aliases_next /etc/aliases > (4)newaliases コマンドを実行(system("newaliases");) > (5)ロックファイルを消す > ?> phpで、~/aliases あたりにファイルを作っておいて、 rootになったあとにシェルで、 # cat aliases >> /etc/aliases # newaliases の方がいいと思います。 phpでファイル作成の部分が必ず一発で出来るとは思わないですし、 aliasesファイルは追記という形にした方が無難です。 すでに設定が入っている場合があるので。 ついでですが、 > system("adduser dummyuser -p dummypass"); adduserに-pをつけないでおくとログインできないアカウントが出来ませんか? 転送させるだけのアカウントならば、ログインする必要すらないと思うのですが。

daisuke_dm
質問者

お礼

再度ご回答ありがとうございます。 なるほど、おっしゃる通りですね。そのようにしてみたいと思います。 >> system("adduser dummyuser -p dummypass"); >adduserに-pをつけないでおくとログインできないアカウントが出来ませんか? >転送させるだけのアカウントならば、ログインする必要すらないと思うのですが。 あ・・・!確かに。金の卵ですね。 ただ、#1さんへのお礼に書いたような悩みがあるので、 後学のために、SSHログイン可能なケースも知りたく思っています。 お手すきでらっしゃいましたら、お助け願いたいと思います。 以上、よろしくお願い申し上げます。

noname#136147
noname#136147
回答No.2

/etc/aliasesを利用して別名をつける方が早いと思います。 PHPとかでもファイル作成できるのではないでしょうか? 詳しくは man aliases で。

daisuke_dm
質問者

お礼

ありがとうございます。 てっきり、 /etc/aliases の中身って、複雑だと思ったのですが、単純だったのですね。 一応、確認させていただきたいのですが、手順としては、 <?php (1)なんかしらロックファイルを作る (2)新しい/etc/aliasesを別名(/etc/aliases_next とかで)でつくる (3)mv /etc/aliases_next /etc/aliases (4)newaliases コマンドを実行(system("newaliases");) (5)ロックファイルを消す ?> といったかたちで大丈夫でしょうか? 以上、よろしくお願い申し上げます。

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

phpが使えるのであれば、アカウントなどをテキストファイルにしておいてphpから(file()で読み込んでおいて)system()やexec()で実行すればいいのでは? #phpからの実行権限があるかどうかわかりませんが(汗

daisuke_dm
質問者

お礼

ご回答ありがとうござます。 なるほどですね。ありがとうございます。 ・・・で・・・ひとつ問題が・・・。 system("adduser dummyuser -p dummypass"); のようにできるように思えたのですが(実際ユーザは追加されました) dummypassの部分は、パスワード「dummypass」にしたいのですが、できません。 調べたところ、cryptだかmcryptだかを使わないとだめなようですが、その方法がわかりません。(暗号化についてかなり詳しくないので) phpで、 <?php $encoded_dummypass = crypt("dummypass"); system("adduser dummyuser -p $encoded_dummypass"); ?> とやったものの、やはり、パスワードは「dummypass」となりませんでした。 どのようにすればできるのでしょうか? あるいは、 -- コンソールで $ adduser dummyuser -p hogehoge (hogehogeの部分は、とりあえずランダムな文字列で一時しのぎ。パスワードが空の状態はまずいので) $ passwd dummyuser Changing password for user dummyuser. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully. とやるのと同じように、 PHPでもインタラクティブ的に(とはいえ自動で)実現可能なのでしょうか? 以上、よろしくお願いします。 p.s. >#phpからの実行権限があるかどうかわかりませんが(汗 rootで、phpファイルをたたけば、実行できました。

関連するQ&A

  • sendmailで、Thunderbirdによってメールを受信できるアカウントとそうでないアカウントが存在する

    VPSのレンタルサーバで、 sendmailを使っています。 一度、postfixを導入しようとしたのですが、やはりやめて、sendmailに戻しました。 すると、 (以下例) ok@exameple.com のメアドは受信できるのに、 fusigi@example.comのメアドは受信できなくなりました。(メッセージがないと言われる) で、Webminでメールボックスを見る(「Read User Mail」)と、fusigi@example.com 宛のメールがたまっています。 で、fusigi@example.com宛にメールを送ると、 /var/log/maillogは Apr 15 20:19:40 www sendmail[1547]: m3FBJdhP001543: to=<fusigi@example.com>, delay=00:00:00, xdelay=00:00:00, mailer=local, pri=31747, dsn=2.0.0, stat=Sent となっています。 また、新しく newemail@example.comというアカウントをつくると、同様の現象がおきます。 (Webminでメールボックスを見ると、メールがたまってるが、受信しようとすると、メッセージがないと言われる) どうしたらこの現象を打開できるでしょうか? どなたかおわかりのかたいらっしゃいましたら、どうぞよろしくお願いいたします。

  • 【FTP】アカウント別のアクセス制限

    基本的なことなのかも知れませんが、どうにも出来ないので教えてください。 某ホスティング会社の専有サーバを利用しています。 WinSCP3やFFFTPなどのソフトを用いてファイル受け渡しを検討しています。 そこで、アカウント「A」さんにはディレクトリ「A」のみ、 「B」さんにはディレクトリ「B」のみが閲覧可能といった設定にしたいのですがどのような設定を行えばよいのでしょうか? webmin利用者なのですが、 シェルのコマンド(?)やグループの設定変更で FTP接続の許可不許可ができたので何かいじれば出来るのかなと思ってましたが・・・できません。。 SSHでrootになってパーミッションを変更してみても、まっったくわかりませんでした。 大変恐縮ですが、何か方法をご存知の方がいらっしゃいましたらご教授いただけないでしょうか。 FTPサーバは設置しないという前提です。。。泣 どうぞ宜しくお願いいたします。

  • BIND からのメールサーバ設定などについて

    CentOS 4.7 と Webmin 1.350 の環境です。 前任のエンジニアが突然やめて連絡も取れなくなったので、 専用サーバーの管理を任されることになりました。 設定を確認するとメールは Google Apps を使用しているのですが、 「BIND DNSサーバ > 既存の DNSゾーン > メールサーバ」 を確認すると 「ASPMX.L.GOOGLE.COM.」 となっていて つまり Google Apps の MX レコードが入っていました。 私の知っている範囲だと、DNS で設定すれば サーバー側で設定する必要は無いと思っていたのですが これはドメインとサーバーの両方で設定する必要があるのでしょうか。 あるいは Google Apps をサーバー運用の途中から使用し始めて、 移行する際に専用サーバーの sendmail に飛んできたメールを Google Apps に転送するためのものでしょうか。 また、今度サーバーの移転をすることになったのですが Google Apps なので メールのデータは Google のサーバーに保存されているのでしょうか。 あるいは私が管理している専用サーバーでしょうか。 もう一つ SSH についてなのですが、Webmin の 「Others > SSH/Telnet ログイン」 に行くと Java が起動するのでユーザーとパスワードを入力して Connneceted と Online に変わるのですが、その後画面が真っ黒のままで キーボードから入力しても何もタイプされない状態です。 これはなにか設定が間違っているのでしょうか。 今のところはメニューですぐ下にある 「コマンドシェル」 を使用しています。 初心者な質問で大変恐縮ですが 分かる範囲で教えて頂けると助かります。

  • Linux メールアカウント自動生成

    現在、PHPでログイン機能のあるWEBサイトを開発しております。 そこでアカウントを作成したタイミングでバーチャルドメインのメールアドレス(info@www2.example.jp) を自動生成するプログラムを作りたいと思っております。 シェルスクリプトは初心者です。 OS: CentOS release 5.7 (Final) メールサーバ: qmail root権限有り 今のところ考えている方法↓ 1、メールアカウントを作るシェルスクリプトを作成 #!/bin/sh # domain domain=$1 # user name user=$2 # password passwd=$3 # mail address email=$2@$1 expect -c " set timeout 5 spawn /home/vpopmail/bin/vadddomain ${domain} expect \"Please enter password for postmaster:\" send \"${passwd}\n\" expect \"enter password again:\" send \"${passwd}\n\" interact " expect -c " spawn /home/vpopmail/bin/vadduser ${email} expect \"Please enter password for ${email}:\" send \"${passwd}\n\" expect \"enter password again:\" send \"${passwd}\n\" interact " 2、PHPのシステム関数でシェルスクリプトを実行 $result = exec("/home/example/create_email.sh www2.example.jp info passwd"); 【問 題】 ・root権限でないとシェルスクリプトを実行できない ・会員数が1千人規模になった場合の負荷 (会員は恐らく最大1千人くらいまでを見越しています。また、 全員にメールアドレスを作成しますが、必ずしも使用しない。) 問題の解決方法はありませんでしょうか?また、 もっといい方法はありませんでしょうか?。

  • xamppとsendmail設定とmailについて

    どなたか、下記の内容で解決に導いてくれる方、居られたらと思い 質問させて頂きました。 xampp1.7.1をインストール osはwindowsxpです。 設置した、cgiやphpからのメールについてなんですが、 php.iniの [mail function] ; For Win32 only. ; http://php.net/smtp ;SMTP = localhost ←コメントアウトする ; http://php.net/smtp-port ;smtp_port = 25 ←コメントアウトする sendmail_path = "\"\xampplite\sendmail\sendmail.exe\" -t" のsendmailのパスのコメントアウトだけをはずしました、 それと sendmail.iniの [sendmail] セクション smtp_server= プロバイダのSMTPサーバ名 smtp_port=587 smtp_ssl=auto default_domain= プロバイダのメールドメイン auth_username= プロバイダのメールアカウント auth_password= 上記メールアカウントのメールパスワード force_sender= 上記アカウントのメールアドレス hostname= test 上記を設定 MarcuryMailでは ・Marcury Coreモジュール DDNSでの設定ドメインを設定。例abc.net ・MarcuryS SMTP abc.netの追加とポート587、smtp-authの設定 ・MarcuryP POP  ユーザーの追加 (例 test@abc.net test2@abc.net ) ・MarcuryC SMTP relaying client プロバイダのsmtpホスト、ポート、smtp認証の設定 の3つのプロトコルモジュールを設定 それから、apacheのルートディレクトリにテストで、  (ServerName abc.net:80)を設定しています。 cgiとphpの各メールフォームを設定しました。(その他にも設置していますけど。。。) 各メールフォームのメール送信元を test@abc.net を設定。 ここからなんですが。。。 ローカル内のクライアントPCのoutlookで test2@abc.net のアカウントを追加、 自分宛てに(test2@abc.net)にメールを送ってみる、正常に届いた。 ローカル内のクライアントPCからの接続で、 cgiとphp共に、アクセスしてsendmailの送信テストを行う、、、 アクセスしたForm画面の、メールアドレスに test2@abc.net を入力して 送信しても、メールが来ない、、、 試しに、再度アクセスしたForm画面の、メールアドレスに サーバーに関連していないドメイン(プロバイダやyahoo,Gmailなどのメールアドレス) を入力して送信すると、正常に届きます。 上記の内容で、sendmailを使ってメール送信した際に、 どうしてMarcuryMailで追加した、ドメイン名でのメールアドレスには メールが来ないのか解りません。。。 どなたか、解決に導いてくれる方、居られませんか。。。 よろしくお願いします。 ------------------------------------------ 上記の内容をまとめました。 ↓↓↓ ●MarcuryMailにabc.netを追加 ●MarcuryMailでアカウント、test@abc.net test2@abc.net を追加 ●php.ini と sendmail.ini を設定 ●apacheのルートディレクトリに、cgi と php のテスト用mailformを設置 ●mailformスクリプトの、送信元メールアドレスに test@abc.netを設定 ●テストでローカル内のクライアントPCのoutlookに test2@abc.net を追加   outlookで test2@abc.netにメール送信、無事メールが届く。 ●設置している、cgiとphpのmailformにアクセス、フォーム画面のメールアドレス欄に、   test2@abc.netを入力後送信してもメールが来ない。 ●再度、設置している、cgiとphpのmailformにアクセス、フォーム画面のメールアドレス欄に、   サーバーに関連していないドメイン(プロバイダやyahoo,Gmailなどのメールアドレス)   を入力して送信すると、正常に届く。 ---------------------------------------------- その他機能は正常に動作しています、その他設置済みのwordpressなど。。

  • VPS:rootを持ちつつマネージドサーバのように

    VPSサーバを借りているのですが、 セキュリティ面が不安なので、 自分がroot権限を持ちつつも、 マネージドサーバのように、運用をしてくれる個人の方がいないかなーと思っています。 (本来のマネージドサーバだとrootはレンタルサーバ業者もちですが) (なお、pop/smtpサーバは絡んでません。linux, apache, mysql, php, くらいです。で、 共用サーバと比べて特別にやってることは、mod_rewriteとvirtualhostとcronくらいです(ま、共有サーバでもできるサーバではできますが)) もし頼んだとしたら、いくらくらいで引き受けてもらえるもんなのでしょうか? 相場がわからないもので。。。 ちまたのレンサバ業者のマネージドサーバでもいいのですが、 apachectl restartとかくらい、cliで打ちたいので。 それと、自分自身でも、サーバ管理のスキルをアップしたいので。 なので、運用+報告をメインにして頂く形になるかと思います。 以上、よろしくお願いいたします。

  • 以下の条件を満たすレンタルサーバをお教えください。

    以下の条件を満たすレンタルサーバをお教えください。 以下の条件で探しています。 ★は必須、●は「できれば」です。 容量はごく少なくてもいいです。 ★商用コンテンツ(アダルトではない) ★共用サーバ(専用/VPSともに却下) <LAMP> ★Linux(できればCentOS) ★Apache ★MySQL5.x ★Perl5.x ★PHP5.x(mod_php。cgi版は却下) --- ★MySqlの文字コードはバイナリまたはUTF-8 ★PHPの文字コードはみなutf-8 <Apache> ★mod_rewriteを.htaccessにかける ★独自ドメイン持ち込み可能。 ●できればサブドメも自由にいくらでも増やせるところ ●できれば・・・virtualdomainの設定が可能 ●comodoかverisignかどっかの第三者のSSLを追加可能なこと  >それが無理ならレンサバの指定したSSLでもやむを得ない。 <MySQL> ★phpmyadmin <その他> ★FTP>FTPorSCPが可能(できればSCP) ★cron ●procmail ●SSHログイン ★pop垢数>理論上無限 ★料金支払方法  >できればクレカ。でも振込でも可能  >月払い。 ●初期費用2500円以下 ★月払い可能 ★月5000円以内 よろしくお願い申し上げます。

  • cronでメールを送信すると文字化けが起こります。

    一昨日にcronというものを知って、いろいろと弄り始めた初心者です。 cronで毎時1分にメールを送信させようと思いました。 cron1.sh というシェルスクリプト(?)で sendmail.php を実行させようとしています。 ---- cron1.sh ---- (保存形式は[UTF-8] 改行コードは[LF]) #!/bin/sh #PHP export LANG=ja_JP.jis /usr/local/bin/php /virtual/example/public_html/example.com/mail/sendmail.php exit ----------------- ---- sendmail.php ---- (保存形式は[UTF-8] 改行コードは[CR+LF]) <? $strMailFrom = "example@example.com"; // $header = "Content-Type: text/plain;charset=iso-2022-jp\r\n"; $header = "From: ".$strMailFrom; mb_language("Japanese"); $address = 'example2@example.com'; $subject = '件名です'; $message = "本文です"; if(mb_send_mail($address, $subject, $message, $header)){ print("メール送信完了"); }else{ print("送信に失敗"); } ?> --------------------- ちなみに起動させることまでは上手く行ったのですが、cronを経由して送信させたメールは文字化けが起こってしまいます。 また、実行結果メールも文字化けになっています。 (メーラーは Outlook です。) ちなみに、sendmail.php から直接のメール送信では文字化けは起こりませんでした。 いくつか自力で調べてみたところ、環境変数に問題があるのかと思ったので、export LANG=ja_JP.jis の部分を、LANG=ja_JP.eucJP、LANG=ja_JP.sjis に変えてみたりしたのですが結果は変わらず。 ファイルの保存形式自体がダメなのか、もしくは何か根本的な部分がダメなのかわかりません。レンタルサーバーのため一時間に一度しかcronで起動させることができないので、なかなか問題解決に至りません。 よろしければ良いアドバイスをください。お願します。 PHPも先月学んだばかりで、最近になってはじめて文字コードや文字化けというものを意識するようになったばかりの初心者です。何か不足している情報などありましたら、補足させていただきます。

    • 締切済み
    • PHP
  • ウェブブラウザからファイルを操作することができません。(Apache - PHP - Linux)

    ウェブブラウザからファイルを操作することができません。 [/var/www/test/index.php] ...(中略)... system("pwd >> /var/www/test/comment"); ...(中略)... ファイル'/var/www/test/comment'に変化は見られません。 パーミッションは(7,7,7)にしてあります。 # ls -la /var/www/test drwxrwxrwx 3 user1 user1 4096 2010-01-12 20:58 . (ちなみに、/, /var, /var/wwwも全て(7,7,7)にしてあります。) # ls -la /var/www/test/comment -rwxrwxrwx 1 root root 1 2010-01-12 20:58 /var/www/test/comment ちなみに、以下のようにエラーが出た時に書き込むような設定にしても、何の変化も見られません。 system("pwd 2> /var/www/test/comment"); また、以下の一行からはユーザとしてapacheが表示されます。 [/var/www/test/index.php] ...(中略)... system("whoami"); ...(中略)... [ブラウザ] apache コマンドラインから入力するとうまく行き、書き込みは成功します。 # pwd >> /var/www/test/comment [/var/www/test/comment] / 想像するに、ユーザapacheでのファイル操作が禁止されているようです。 環境はLinux(Fedora10)で、Apache/2.2.10 (Unix)、PHP 5.2.9 (cli)です。 困り果てています。解決策をどうかよろしくお願い致します。

  • コマンドラインからプログラムが実行できません

    Windows上でエディタで書いたプログラム(echo.phpとします)をSSHを使ってサーバ(RedHatLinux)にアップロードし、それをサーバ上でコマンドラインから実行させたいのですが、うまくいきません。具体的には、コンソール画面に /usr/loca/bin/php /home/(省略)/echo.php と打ち込んだのですが、実行されずにコマンドプロンプトが表示されます。 nkfコマンドで文字コードをEUCに、改行コードをLFにしてみたり、 ファイルのパーミッションを777にしてみたりしたのですが、ダメでした。 エラーメッセージが出ないため、これ以上の対処の仕方がわからず困っています。原因と解決策を教えていただきたいです。 なお、#/usr/local/bin/php -v でcli版のPHP実行ファイルであることは確認しています。また、echo.phpの一行目に#!/usr/local/bin/phpと記述しスクリプト単体で実行させてもダメでした。 phpの-aオプションも試しましたがIntaractive mode enabledと表示された後にコマンドプロンプトが表示され、利用できません。 *echo.phpの中身 <?php echo "Hello\n"; ?>

    • ベストアンサー
    • PHP