fd254
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору #!/usr/bin/perl use DBI; use Getopt::Long; use Mail::Mailer; use MIME::QuotedPrint; # Константы my ($id,$pass,$quota,$help); $mbox_host="domain.ru"; GetOptions ( "user=s" => \$id, # Имя пользователя "pass=s" => \$userpass, # Пароль "q=i" => \$quota, # Квота "help" => \$help # Помощь ); die "Введите имя пользователя " unless defined $id; die "Введите пароль" unless defined $userpass; die "Введите дисковую квоту" unless defined $quota; sub userexist { my $valid_id=$_[0]; $host="localhost"; $user="mail"; $pass="password"; $base="maildb"; $port="3306"; $dsn = "DBI:mysql:database=$base;host=$host;port=$port"; $dbh = DBI->connect($dsn, $user, $pass,{'RaiseError' => 1}); $sth = $dbh->prepare(qq{SELECT * FROM users WHERE id=? }); $sth->execute($valid_id); while ( my $ref = $sth->fetchrow_hashref()) { if ( $ref->{'active'}) { die "Пользователь $valid_id уже существует в системе\n"; } } $sth->finish; $dbh->disconnect; } sub useradd { my ($id,$userpass,$quota,$mbox_host)=@_; my $shell="\/sbin\/nologin"; my $uid="102"; my $gid="8"; my $active="Y"; my $home="\/home\/vmail\/domains\/"; $homedir=$home.$mbox_host."\/".$id; # Соединение с базой данных $db_host="localhost"; $db_user="mail"; $db_pass="password"; $db_base="maildb"; $db_port="3306"; $dsn = "DBI:mysql:database=$db_base;host=$db_host;port=$db_port"; $dbh = DBI->connect($dsn, $db_user, $db_pass,{'RaiseError' => 1}); $sth = $dbh->prepare( qq{ INSERT INTO users VALUES (?,ENCRYPT(?),?,?,?,?,?,?,?,?) }); $sth->execute($id,$userpass,$userpass,$uid,$gid,$mbox_host,$shell,$homedir,$quota,$active); $sth->finish(); $dbh->disconnect(); } sub sendmail { my ($id,$mbox_host) = @_; $from_address="Свой_Адрес_сюда@".$mbox_host; $to_address=$id."@".$mbox_host; $pre_subj="Добро пожаловать на $mbox_host"; # $mbox_host $post_subj=encode_qp($pre_subj,""); $post_subj=~s/ /_/g; $subject="=?koi8-r?Q?".$post_subj."?="; $body="Здравствуйте!\n\nНадеемся, что Вы будете довольны работой Вашего почтового ящика и удовлетворены набором предлагаемых Вам услуг:\n\t*Объем почтового ящика - 25 Мб*\n\t*Максимальный размер письма - 10 Мб*\n\t*Защита от вирусов\n\tЗащита от спама\n\tДоступ по протоколу IMAP\n\t**/\n\tНе забывайте периодически чистить почтовые папки, в соотвестствии с размером Вашаего ящика.\n\t /*\n\n\n\tИнженер отдела информатизации\n\t"; $mailer = Mail::Mailer->new("sendmail"); $mailer->open(\%headers); $mailer->open({ "From" => $from_address, "To" => $to_address, "Subject" => $subject, "MIME-Version" => "1.0", "Content-Type" => "text/plain; charset=KOI8-R; format=flowed", "Content-Transfer-Encoding" => "8bit", }) or die "Не могу открыть: $!\n"; print $mailer $body; $mailer->close; } userexist($id); useradd($id,$userpass,$quota,$mbox_host); sendmail($id,$mbox_host); | Всего записей: 142 | Зарегистр. 07-02-2003 | Отправлено: 21:11 25-09-2006 | Исправлено: fd254, 21:14 25-09-2006 |
|