Pasang Mail Server Bahagian 6 – Postfix, Courier, MySQL & AfterLogic WebMail

Artikel pasang mail server pada kali ini akan membincangkan aspek pengurusan akaun pengguna email.  Kita akan bincangkan 2 perkara pengurusan iaitu menambah dan menghapus akaun pengguna.  Seperti yang terdapat dalam artikel Pasang Mail Server (Bahagian 4), kita perlu untuk memasuki pangkalan data MySQL untuk menambah dan menghapus pengguna.  Artikel kali ini akan membantu memudahkan pengurusan ini dengan atursara ringkas yang dibangunkan dengan PHP.

AMARAN:  Aturcara PHP yang dibangunkan adalah sangat ringkas dan tidak selamat dari serangan laman web seperti SQL injection dan sebagainya. Maklumlah programmer amatur copy dan paste sana sini.  Pastikan anda tidak mendedahkan program ini di laman web tanpa sebarang perlindungan!  Sesiapa yang boleh menjadikan ianya lebih kacak dan selamat dialu-alukan…

18. Bina Direktori

Jika folder laman web anda adalah di /var/www/html:

cd /var/www/html
mkdir mailadmin

19. Konfigurasi “Basic HTTP Auth”

Pastikan dalam konfigurasi website anda (contoh di: /etc/apache2/sites-available/00-default.conf) mempunyai direktif seperti berikut:

Edit fail:

vi /etc/apache2/sites-available/00-default.conf

Kandungan:

[...]

 DocumentRoot /var/www/
 <Directory /var/www/>
    Options None
    AllowOverride All
    Order allow,deny
    Allow from all
 </Directory>

[...]

Masuk ke folder mailadmin:

cd /var/www/html/mailadmin

Bina fail .htaccess

vi .htaccess

Masukkan kandungan berikut:

AuthUserFile /var/www/html/mailadmin/.htpasswd
AuthName "Please Enter Password"
AuthType Basic
Require valid-user

Bina akaun pengguna dan password:

 htpasswd -c .htpasswd nazri

Tukar dengan nama pengguna yang anda mahu dan password yang KUKUH.

Tukar permission:

chmod 744 .htpasswd
chmod 744 .htaccess

Restart apache web server:

service apache2 restart

20. Menambah Pengguna

Aturcara ringkas ini akan memasukkan akaun pengguna email ke pangkalan data dan menghantar welcome email bagi membina Maidir secara automatik.

Bina aturcara ringkas berikut di dalam direktori yang sama (/var/www/mailadmin):

cd /var/www/html/mailadmin
vi add.html

Masukkan:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Add User</title>
</head>
<body>
<form action="insert.php" method="post">
 <p>
 <label for="email">Email:</label>
 <input type="text" name="email" id="email">
 </p>
 <p>
 <label for="password">Password:</label>
 <input type="text" name="password" id="password">
 </p>
 <input type="submit" value="Add User">
</form>
<BR>
Click <a href="http://mail.datalead.com.my/mailadmin"> here </a> for main menu.
</body>
</html>

Tukar URL berwarna merah dengan alamat server anda.

Bina fail PHP untuk tambah pengguna:

vi insert.php

Masukkan kod berikut dan tukar maklumat yang berwarna merah:

<?php
/* Tambah akaun pengguna ke pangkalan data MySQL*/

$link = mysqli_connect("localhost", "mail", "password_mail_anda", "mail_db");

// Check connection
if($link === false){
 die("ERROR: Could not connect. " . mysqli_connect_error());
}

// Escape user inputs for security

$email = mysqli_real_escape_string($link, $_POST['email']);
$password = mysqli_real_escape_string($link, $_POST['password']);

// Tukar kuota mengikut cita rasa anda
$quota = 500485760;

// tambah ke pangkalan data
$sql = "INSERT INTO users (email, password, quota) VALUES ('$email', ENCRYPT('$password'), '$quota')";

if(mysqli_query($link, $sql)){
 echo "Records added successfully. <br>";
 $to = $email;
 $subject = "Email Account Activation";
 $message = "Hi $email, Welcome to DATALEAD MAILBOX!";
 $header = "From:postmaster@datalead.com.my \r\n";
 
 $retval = mail ($to,$subject,$message,$header);
 if( $retval == true )
 {
 echo "Message sent successfully...<br>";
 echo "Click <a href='http://mail.datalead.com.my/mailadmin'> here </a> for
 main menu. <br> ";
 }
 else
 {
 echo "Message could not be sent...";
 echo "Click <a href='http://mail.datalead.com.my/mailadmin'> here </a> for
 main menu. <br> ";
 }
 } else{
 echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
 }

// close connection
mysqli_close($link);
?>

21. Papar dan Hapus Pengguna

Bina fail “delete.php” dalam direktori yang sama:

vi delete.php

Masukkan kandungan berikut dan tukar maklumat yang berkenaan:

<html>
<head>
<title>Delete User</title>
</head>
<body>
<?php
$servername = "localhost";
$username = "mail";
$password = "password_mail_anda";
$dbname = "mail_db";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
 die("Connection failed: " . mysqli_connect_error());
}

$sql = "SELECT email, password, quota FROM users";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {

// output data of each row
 while($row = mysqli_fetch_assoc($result)) {
 echo "Email: " . $row["email"] . "<br>";
 }
} else {
 echo "0 results";
}
echo "<br>";

mysqli_close($conn);
?>

<?php
if(isset($_POST['delete']))
{
$dbhost = 'localhost:3036';
$dbuser = 'mail';
$dbpass = 'password_mail_anda';
$db = 'mail';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}

$email = $_POST['email'];
$sql = "DELETE FROM users ".
 "WHERE email = '$email'" ;

mysql_select_db($db);
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
 die('Could not delete data: ' . mysql_error());
}
echo "Email $email deleted successfully. <br>";
echo "Don't forget to delete user mailbox at /home/vmail/datalead.com.my manually. <br>";
echo "Click <a href='http://mail.datalead.com.my/mailadmin'> here </a> for main menu. <br> ";

mysql_close($conn);
}
else
{
?>

<form method="post" action="<?php $_PHP_SELF ?>">
<table width="400" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="100">Delete Email</td>
<td><input name="email" type="text" id="email"></td>
</tr>
<tr>
<td width="100"> </td>
<td> </td>
</tr>
<tr>
<td width="100"> </td>
<td>
<input name="delete" type="submit" id="delete" value="Delete">
</td>
</tr>
</table>
</form>
<BR>
Click <a href="http://mail.datalead.com.my/mailadmin"> here </a> for main menu.

</body>
</html>

Seperti di dalam aturcara di atas, kita perlu menghapuskan Maildir yang berkaitan dengan akaun pengguna di atas secara manual.

22. Bina Laman Utama

Edit fail “index.html” dalam direktori yang sama:

vi index.html

Masukkan kod HTML ringkas dan malas berikut (hehehe):

<A HREF='add.html'>ADD</A><BR>
<A HREF='delete.php'>DELETE</A><BR>

Tukar kesemua permission dan fail ownership:

cd /var/www/html
chown www-data.www-data mailadmin -R
chmod 755 mailadmin -R

Kini anda boleh layari atrucara ringkas melalui alamat http://mail.datalead.com.my/mailadmin.  Masukkan akaun pengguna dan kata laluan yang dibina dalam langkah (19).  Terimalah program ringkas dan malas mailadmin berikut:

Laman utama:

 

 

Tambah pengguna:

 

Papar dan hapus pengguna:

 

23. Penutup

Sekian sahaja artikel bahagian ke-6 siri pasang mail server. Tuan-tuan yang mempunyai skill yang tinggi dalam PHP programming dialu-alukan untuk menambah baik program di atas :-).  Dengan ini tamatlah keseluruhan siri artikel untuk pasang email server.  Selamat mencuba dan jumpa lagi pada lain-lain artikel pada masa hadapan.

 

____________________________________________________

BAHAGIAN 1 | BAHAGIAN 2 | BAHAGIAN 3 | BAHAGIAN 4 | BAHAGIAN 5 | BAHAGIAN 6

 

Leave a Reply

Your email address will not be published. Required fields are marked *