{"id":142,"date":"2011-02-09T15:48:09","date_gmt":"2011-02-09T15:48:09","guid":{"rendered":"http:\/\/gigihfordanama.wordpress.com\/?p=142"},"modified":"2012-08-08T00:14:11","modified_gmt":"2012-08-08T00:14:11","slug":"isp-config-on-ubuntu-hardy-heron-chap","status":"publish","type":"post","link":"https:\/\/dosen.unila.ac.id\/gigih\/2011\/02\/09\/isp-config-on-ubuntu-hardy-heron-chap\/","title":{"rendered":"ISP Config on Ubuntu Hardy Heron Chap"},"content":{"rendered":"<p>To install such a system you will need the following:<\/p>\n<ul>\n<li>Ubuntu 8.04 LTS server CD, available here: <a href=\"ftp:\/\/releases.ubuntu.com\/releases\/hardy\/ubuntu-8.04-server-i386.iso\">ftp:\/\/releases.ubuntu.com\/releases\/hardy\/ubuntu-8.04-server-i386.iso<\/a><\/li>\n<li>a fast internet connection.<\/li>\n<\/ul>\n<p>Make sure Ubuntu instalation running success.<\/p>\n<p>Now we will prepare to install all software for ISPConfig deployment<\/p>\n<blockquote><p>Type<strong><em> sudo -i on console , and\u00a0 type your root password<\/em><\/strong><\/p><\/blockquote>\n<h3>1.\u00a0 Install The SSH Server (Optional)<\/h3>\n<p>If you did not install the OpenSSH server during the system installation, you can do it now:<\/p>\n<blockquote><p><strong><em>apt-get install ssh openssh-server<\/em><\/strong><\/p><\/blockquote>\n<p>From now on you can use an SSH client such as <a href=\"http:\/\/www.chiark.greenend.org.uk\/%7Esgtatham\/putty\/download.html\" target=\"_blank\">PuTTY<\/a> and connect from your workstation to your Ubuntu 8.04 LTS server and follow the remaining steps from this tutorial. <!--more--><\/p>\n<h3>2.\u00a0 Install vim-full (Optional)<\/h3>\n<p>I&#8217;ll use vi as my text editor in this tutorial. The default vi program has some strange behaviour on Ubuntu and Debian; to fix this, we install vim-full:<\/p>\n<blockquote><p><strong><em>apt-get install vim-full<\/em><\/strong><\/p><\/blockquote>\n<p>(You don&#8217;t have to do this if you use a different text editor such as joe or nano.)<\/p>\n<h3>3.\u00a0 Configure The Network<\/h3>\n<p>Because the Ubuntu installer has configured our system to get its network settings via DHCP, we have to change that now because a server should have a static IP address. Edit <em>\/etc\/network\/interfaces <\/em> and adjust it to your needs (in this example setup I will use the IP address <em>192.168.0.100<\/em>):<\/p>\n<blockquote><p><strong><em>vi \/etc\/network\/interfaces<\/em><\/strong><\/p><\/blockquote>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\" width=\"90%\" align=\"center\" bgcolor=\"#cccccc\">\n<tbody>\n<tr>\n<td>\n<pre># This file describes the network interfaces available on your system\n# and how to activate them. For more information, see interfaces(5).\n# The loopback network interface\nauto lo\niface lo inet loopback\n# The primary network interface\nauto eth0\niface eth0 inet static\n        address 192.168.0.100\n        netmask 255.255.255.0\n        network 192.168.0.0\n        broadcast 192.168.0.255\n        gateway 192.168.0.1<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Then restart your network:<\/p>\n<blockquote><p><strong><em>\/etc\/init.d\/networking restart<\/em><\/strong><\/p><\/blockquote>\n<p>Then edit \/etc\/hosts. Make it look like this:<\/p>\n<blockquote><p><strong><em>vi \/etc\/hosts<\/em><\/strong><\/p><\/blockquote>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\" width=\"90%\" align=\"center\" bgcolor=\"#cccccc\">\n<tbody>\n<tr>\n<td>\n<pre>127.0.0.1       localhost.localdomain   localhost\n192.168.0.100   hosting.unila.ac.id    hosting\n# The following lines are desirable for IPv6 capable hosts\n::1     ip6-localhost ip6-loopback\nfe00::0 ip6-localnet\nff00::0 ip6-mcastprefix\nff02::1 ip6-allnodes\nff02::2 ip6-allrouters\nff02::3 ip6-allhosts<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Now run<\/p>\n<blockquote><p><strong><em>echo hosting.unila.ac.id &gt; \/etc\/hostname<br \/>\n\/etc\/init.d\/hostname.sh start<\/em><\/strong><\/p><\/blockquote>\n<p>Afterwards, run<\/p>\n<blockquote><p><strong><em>hostname<br \/>\nhostname -f<\/em><\/strong><\/p><\/blockquote>\n<p>Both should show <em><strong>hosting.unila.ac.id <\/strong><\/em> now.<\/p>\n<h3>4.\u00a0 Edit \/etc\/apt\/sources.list And Update Your Linux Installation<\/h3>\n<p>Edit \/etc\/apt\/sources.list. Comment out or remove the installation CD from the file and make sure that the universe and multiverse repositories are enabled. It should look like this:<\/p>\n<p>My Repository Update is pointing to kambing.ui.edu\u00a0 located on INHERENT.<\/p>\n<blockquote><p><em><strong>vi \/etc\/apt\/sources.list<\/strong><\/em><\/p><\/blockquote>\n<blockquote><p><em>## REPOSITORY UTAMA<br \/>\ndeb http:\/\/kambing.ui.edu\/ubuntu hardy main restricted universe multiverse<br \/>\ndeb-src http:\/\/kambing.ui.edu\/ubuntu hardy main restricted universe multiverse<\/p>\n<p>## INI UNTUK MAJOR BUG FIX UPDATES<br \/>\ndeb http:\/\/kambing.ui.edu\/ubuntu hardy-updates main restricted universe multiverse<br \/>\ndeb-src http:\/\/kambing.ui.edu\/ubuntu hardy-updates main restricted universe multiverse<\/p>\n<p>## INI UNTUK UBUNTU SECURITY UPDATES<br \/>\ndeb http:\/\/kambing.ui.edu\/ubuntu hardy-security main restricted universe multiverse<br \/>\ndeb-src http:\/\/kambing.ui.edu\/ubuntu hardy-security main restricted universe multiverse<\/em><\/p><\/blockquote>\n<blockquote><p><strong><em>apt-get update<\/em><\/strong><\/p><\/blockquote>\n<p>to update the apt package database and<\/p>\n<blockquote><p><strong><em>apt-get upgrade<\/em><\/strong><\/p><\/blockquote>\n<p>to install the latest updates (if there are any).<\/p>\n<h3>5.\u00a0 Change The Default Shell<\/h3>\n<p>\/bin\/sh is a symlink to \/bin\/dash, however we need \/bin\/bash, not \/bin\/dash. Therefore we do this:<\/p>\n<blockquote><p><strong><em>ln -sf \/bin\/bash \/bin\/sh<br \/>\n<\/em><\/strong><\/p><\/blockquote>\n<p>If you don&#8217;t do this, the ISPConfig installation will fail.<\/p>\n<h3>6.\u00a0 Disable AppArmor<\/h3>\n<p>AppArmor is a security extension (similar to SELinux) that should provide extended security. In my opinion you don&#8217;t need it to configure a secure system, and it usually causes more problems than advantages (think of it after you have done a week of trouble-shooting because some service wasn&#8217;t working as expected, and then you find out that everything was ok, only AppArmor was causing the problem). Therefore I disable it (this is a must if you want to install ISPConfig later on).<\/p>\n<p>We can disable it like this:<\/p>\n<blockquote><p><em><strong>\/etc\/init.d\/apparmor stop<br \/>\n<\/strong><\/em><\/p><\/blockquote>\n<blockquote><p><strong><em>update-rc.d -f apparmor remove<\/em><\/strong><\/p><\/blockquote>\n<p>Till told me that he also had to do this step (which was not necessary on my installation), so if you want to go sure, do this on your system as well:<\/p>\n<blockquote><p><strong><em>apt-get remove apparmor apparmor-utils<\/em><\/strong><\/p><\/blockquote>\n<h3>7. \u00a0 Install Some Software<\/h3>\n<p>Now we install a few packages that are needed later on. Run<\/p>\n<p>apt-get install binutils cpp fetchmail flex gcc libarchive-zip-perl libc6-dev libcompress-zlib-perl libdb4.3-dev libpcre3 libpopt-dev lynx m4 make ncftp nmap openssl perl perl-modules unzip zip zlib1g-dev autoconf automake1.9 libtool bison autotools-dev g++ build-essential<\/p>\n<p>(This command must go into <strong>one line<\/strong>!)<\/p>\n<h3>8.\u00a0 Quota<\/h3>\n<p>(If you have chosen a different partitioning scheme than I did, you must adjust this chapter so that quota applies to the partitions where you need it.)<\/p>\n<p>To install quota, run<\/p>\n<blockquote><p><strong><em>apt-get install quota<\/em><\/strong><\/p><\/blockquote>\n<p>Edit \/etc\/fstab. Mine looks like this (I added ,usrquota,grpquota to the partition with the mount point \/):<\/p>\n<blockquote><p><strong><em>vi \/etc\/fstab<\/em><\/strong><\/p><\/blockquote>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\" width=\"90%\" align=\"center\" bgcolor=\"#cccccc\">\n<tbody>\n<tr>\n<td>\n<pre># \/etc\/fstab: static file system information.\n#\n# &lt;file system&gt; &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;       &lt;dump&gt;  &lt;pass&gt;\nproc            \/proc           proc    defaults        0       0\n# \/dev\/sda1\nUUID=6af53069-0d51-49be-b275-aeaea8d780c5 \/               ext3    relatime,errors=remount-ro,usrquota,grpquota 0       1\n# \/dev\/sda5\nUUID=d8e1f66c-1442-423e-b442-8ae66eded9d7 none            swap    sw              0       0\n\/dev\/scd0       \/media\/cdrom0   udf,iso9660 user,noauto,exec,utf8 0       0\n\/dev\/fd0        \/media\/floppy0  auto    rw,user,noauto,exec,utf8 0       0<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>To enable quota, run these commands:<\/p>\n<blockquote><p><strong><em>touch \/quota.user \/quota.group<br \/>\nchmod 600 \/quota.*<br \/>\nmount -o remount \/<\/em><\/strong><\/p><\/blockquote>\n<blockquote><p><strong><em>quotacheck -avugm<br \/>\nquotaon -avug<\/em><\/strong><\/p><\/blockquote>\n<h3>9.\u00a0 DNS Server<\/h3>\n<p>Run<\/p>\n<blockquote><p><strong><em>apt-get install bind9<\/em><\/strong><\/p><\/blockquote>\n<p>For security reasons we want to run BIND chrooted so we have to do the following steps:<\/p>\n<blockquote><p><em><strong>\/etc\/init.d\/bind9 stop<\/strong><\/em><\/p><\/blockquote>\n<p>Edit the file \/etc\/default\/bind9 so that the daemon will run as the unprivileged user bind, chrooted to \/var\/lib\/named. Modify the line: OPTIONS=&#8221;-u bind&#8221; so that it reads OPTIONS=&#8221;-u bind -t \/var\/lib\/named&#8221;:<\/p>\n<blockquote><p><strong><em>vi \/etc\/default\/bind9<\/em><\/strong><\/p><\/blockquote>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\" width=\"90%\" align=\"center\" bgcolor=\"#cccccc\">\n<tbody>\n<tr>\n<td>\n<pre>OPTIONS=\"-u bind -t \/var\/lib\/named\"\n# Set RESOLVCONF=no to not run resolvconf\nRESOLVCONF=yes<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Create the necessary directories under \/var\/lib:<\/p>\n<blockquote><p><strong><em>mkdir -p \/var\/lib\/named\/etc<br \/>\nmkdir \/var\/lib\/named\/dev<br \/>\nmkdir -p \/var\/lib\/named\/var\/cache\/bind<br \/>\nmkdir -p \/var\/lib\/named\/var\/run\/bind\/run<\/em><\/strong><\/p><\/blockquote>\n<p>Then move the config directory from \/etc to \/var\/lib\/named\/etc:<\/p>\n<blockquote><p><strong><em>mv \/etc\/bind \/var\/lib\/named\/etc<\/em><\/strong><\/p><\/blockquote>\n<p>Create a symlink to the new config directory from the old location (to avoid problems when bind gets updated in the future):<\/p>\n<blockquote><p><strong><em>ln -s \/var\/lib\/named\/etc\/bind \/etc\/bind<\/em><\/strong><\/p><\/blockquote>\n<p>Make null and random devices, and fix permissions of the directories:<\/p>\n<blockquote><p><strong><em>mknod \/var\/lib\/named\/dev\/null c 1 3<br \/>\nmknod \/var\/lib\/named\/dev\/random c 1 8<br \/>\nchmod 666 \/var\/lib\/named\/dev\/null \/var\/lib\/named\/dev\/random<br \/>\nchown -R bind:bind \/var\/lib\/named\/var\/*<br \/>\nchown -R bind:bind \/var\/lib\/named\/etc\/bind<\/em><\/strong><\/p><\/blockquote>\n<p>We need to modify \/etc\/default\/syslogd so that we can still get important messages logged to the system logs. Modify the line: SYSLOGD=&#8221;&#8221; so that it reads: SYSLOGD=&#8221;-a \/var\/lib\/named\/dev\/log&#8221;:<\/p>\n<blockquote><p><strong><em>vi \/etc\/default\/syslogd<\/em><\/strong><\/p><\/blockquote>\n<pre>#\n# Top configuration file for syslogd\n#\n\n#\n# Full documentation of possible arguments are found in the manpage\n# syslogd(8).\n#\n\n#\n# For remote UDP logging use SYSLOGD=\"-r\"\n#\nSYSLOGD=\"-a \/var\/lib\/named\/dev\/log\"<\/pre>\n<p>etc\/init.d\/sysklogd restart<\/p>\n<p>Start up BIND, and check \/var\/log\/syslog for errors:<\/p>\n<p>\/etc\/init.d\/bind9 start<\/p>\n<h3>10.\u00a0 MySQL<\/h3>\n<p>In order to install MySQL, we run<\/p>\n<blockquote><p><em><strong>apt-get install mysql-server mysql-client libmysqlclient15-dev<\/strong><\/em><\/p><\/blockquote>\n<p>You will be asked to provide a password for the MySQL root user &#8211; this password is valid for the user root@localhost as well as  \/\/ &lt;![CDATA[<\/p>\n<p>var prefix = &#039;&#109;a&#039; + &#039;i&#108;&#039; + &#039;&#116;o&#039;;<br \/>\nvar path = &#039;hr&#039; + &#039;ef&#039; + &#039;=&#039;;<br \/>\nvar addy91680 = &#039;r&#111;&#111;t&#039; + &#039;&#064;&#039;;<br \/>\naddy91680 = addy91680 + &#039;h&#111;st&#105;ng&#039; + &#039;&#046;&#039; + &#039;&#117;n&#105;l&#097;&#039; + &#039;&#046;&#039; + &#039;&#097;c&#039; + &#039;&#046;&#039; + &#039;&#105;d&#039;;<br \/>\ndocument.write( &#039;<a>&#8216; );<br \/>\ndocument.write( addy91680 );<br \/>\ndocument.write( &#8221; );<br \/>\n\/\/ ]]&gt;<a href=\"mailto:root@hosting.unila.ac.id\">root@hosting.unila.ac.id<\/a><br \/>\nThis email address is being protected from spam bots, you need Javascript enabled to view it<br \/>\n, so we don&#8217;t have to specify a MySQL root password manually later on (as was the case with previous Ubuntu versions):<\/p>\n<blockquote><p><strong><em>New password for the MySQL &#8220;root&#8221; user: &lt;&#8211; yourrootsqlpassword<\/em><\/strong><br \/>\n<strong><em>Repeat password for the MySQL &#8220;root&#8221; user: &lt;&#8211; yourrootsqlpassword<\/em><\/strong><\/p><\/blockquote>\n<p>We want MySQL to listen on all interfaces, not just localhost, therefore we edit \/etc\/mysql\/my.cnf and comment out the line bind-address = 127.0.0.1:<\/p>\n<blockquote><p><strong><em>vi \/etc\/mysql\/my.cnf<\/em><\/strong><\/p><\/blockquote>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\" width=\"90%\" align=\"center\" bgcolor=\"#cccccc\">\n<tbody>\n<tr>\n<td>\n<pre>[...]\n# Instead of skip-networking the default is now to listen only on\n# localhost which is more compatible and is not less secure.\n#bind-address           = 127.0.0.1\n[...]<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Then we restart MySQL:<\/p>\n<blockquote><p><em><strong>\/etc\/init.d\/mysql restart<\/strong><\/em><\/p><\/blockquote>\n<p>Now check that networking is enabled. Run<\/p>\n<blockquote><p><strong><em>netstat -tap | grep mysql<\/em><\/strong><\/p><\/blockquote>\n<p>The output should look like this:<\/p>\n<blockquote><p><strong><em>root@hosting:~#\u00a0netstat\u00a0-tap\u00a0|\u00a0grep\u00a0mysql<br \/>\ntcp\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a00\u00a0\u00a0\u00a0\u00a0\u00a0\u00a00\u00a0*:mysql\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0*:*\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0LISTEN\u00a0\u00a0\u00a0\u00a0\u00a0\u00a05869\/mysqld<br \/>\nroot@hosting:~#<\/em><\/strong><\/p><\/blockquote>\n<h3>11.\u00a0 Postfix With SMTP-AUTH And TLS<\/h3>\n<p>In order to install Postfix with SMTP-AUTH and TLS do the following steps:<\/p>\n<blockquote><p><strong><em>apt-get install postfix libsasl2-2 sasl2-bin libsasl2-modules procmail<\/em><\/strong><\/p><\/blockquote>\n<p>You will be asked two questions. Answer as follows:<\/p>\n<p>General type of mail configuration: &lt;&#8211; Internet Site<br \/>\nSystem mail name: &lt;&#8211; hosting.unila.ac.id<\/p>\n<p>Then run<\/p>\n<blockquote><p><strong><em>dpkg-reconfigure postfix<\/em><\/strong><\/p><\/blockquote>\n<p>Again, you&#8217;ll be asked some questions:<\/p>\n<p>General type of mail configuration: &lt;&#8211; Internet Site<br \/>\nSystem mail name: &lt;&#8211; hosting.unila.ac.id<br \/>\nRoot and postmaster mail recipient: &lt;&#8211; [blank]<br \/>\nOther destinations to accept mail for (blank for none): &lt;&#8211; hosting.unila.ac.id, localhost.example.com, localhost.localdomain, localhost<br \/>\nForce synchronous updates on mail queue? &lt;&#8211; No<br \/>\nLocal networks: &lt;&#8211; 127.0.0.0\/8<br \/>\nUse procmail for local delivery? &lt;&#8211; Yes<br \/>\nMailbox size limit (bytes): &lt;&#8211; 0<br \/>\nLocal address extension character: &lt;&#8211; +<br \/>\nInternet protocols to use: &lt;&#8211; all<\/p>\n<p>Next, do this:<\/p>\n<blockquote><p><em><strong>postconf -e &#8216;smtpd_sasl_local_domain =&#8217;<br \/>\npostconf -e &#8216;smtpd_sasl_auth_enable = yes&#8217;<br \/>\npostconf -e &#8216;smtpd_sasl_security_options = noanonymous&#8217;<br \/>\npostconf -e &#8216;broken_sasl_auth_clients = yes&#8217;<br \/>\npostconf -e &#8216;smtpd_sasl_authenticated_header = yes&#8217;<br \/>\npostconf -e &#8216;smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination&#8217;<br \/>\npostconf -e &#8216;inet_interfaces = all&#8217;<br \/>\necho &#8216;pwcheck_method: saslauthd&#8217; &gt;&gt; \/etc\/postfix\/sasl\/smtpd.conf<br \/>\necho &#8216;mech_list: plain login&#8217; &gt;&gt; \/etc\/postfix\/sasl\/smtpd.conf<\/strong><\/em><\/p><\/blockquote>\n<p>Afterwards we create the certificates for TLS:<\/p>\n<blockquote><p><strong><em>mkdir \/etc\/postfix\/ssl<\/em><\/strong><br \/>\n<strong><em> cd \/etc\/postfix\/ssl\/<\/em><\/strong><\/p><\/blockquote>\n<blockquote><p><strong><em>openssl genrsa -des3 -rand \/etc\/hosts -out smtpd.key 1024<\/em><\/strong><\/p>\n<p><strong><em>chmod 600 smtpd.key<\/em><\/strong><\/p><\/blockquote>\n<blockquote><p><strong><em>openssl req -new -key smtpd.key -out smtpd.csr<\/em><\/strong><strong><em>openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt<\/em><\/strong><\/p>\n<p><strong><em>openssl rsa -in smtpd.key -out smtpd.key.unencrypted<\/em><\/strong><\/p>\n<p><strong><em>mv -f smtpd.key.unencrypted smtpd.key<\/em><\/strong><\/p><\/blockquote>\n<blockquote><p><strong><em>openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650<\/em><\/strong><\/p><\/blockquote>\n<p>Next we configure Postfix for TLS (make sure that you use the correct hostname for myhostname):<\/p>\n<blockquote><p><em><strong>postconf -e &#8216;myhostname = hosting.unila.ac.id&#8217;<\/strong><\/em><\/p>\n<p><em><strong>postconf -e &#8216;smtpd_tls_auth_only = no&#8217;<br \/>\npostconf -e &#8216;smtp_use_tls = yes&#8217;<br \/>\npostconf -e &#8216;smtpd_use_tls = yes&#8217;<br \/>\npostconf -e &#8216;smtp_tls_note_starttls_offer = yes&#8217;<br \/>\npostconf -e &#8216;smtpd_tls_key_file = \/etc\/postfix\/ssl\/smtpd.key&#8217;<br \/>\npostconf -e &#8216;smtpd_tls_cert_file = \/etc\/postfix\/ssl\/smtpd.crt&#8217;<br \/>\npostconf -e &#8216;smtpd_tls_CAfile = \/etc\/postfix\/ssl\/cacert.pem&#8217;<br \/>\npostconf -e &#8216;smtpd_tls_loglevel = 1&#8217;<br \/>\npostconf -e &#8216;smtpd_tls_received_header = yes&#8217;<br \/>\npostconf -e &#8216;smtpd_tls_session_cache_timeout = 3600s&#8217;<br \/>\npostconf -e &#8216;tls_random_source = dev:\/dev\/urandom&#8217;<\/strong><\/em><\/p><\/blockquote>\n<p>The file \/etc\/postfix\/main.cf should now look like this:<\/p>\n<blockquote><p><strong><em>cat \/etc\/postfix\/main.cf<\/em><\/strong><\/p><\/blockquote>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\" width=\"90%\" align=\"center\" bgcolor=\"#cccccc\">\n<tbody>\n<tr>\n<td>\n<pre># See \/usr\/share\/postfix\/main.cf.dist for a commented, more complete version\n\n\n# Debian specific:  Specifying a file name will cause the first\n# line of that file to be used as the name.  The Debian default\n# is \/etc\/mailname.\n#myorigin = \/etc\/mailname\n\nsmtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)\nbiff = no\n\n# appending .domain is the MUA's job.\nappend_dot_mydomain = no\n\n# Uncomment the next line to generate \"delayed mail\" warnings\n#delay_warning_time = 4h\n\nreadme_directory = no\n\n# TLS parameters\nsmtpd_tls_cert_file = \/etc\/postfix\/ssl\/smtpd.crt\nsmtpd_tls_key_file = \/etc\/postfix\/ssl\/smtpd.key\nsmtpd_use_tls = yes\nsmtpd_tls_session_cache_database = btree:${data_directory}\/smtpd_scache\nsmtp_tls_session_cache_database = btree:${data_directory}\/smtp_scache\n\n# See \/usr\/share\/doc\/postfix\/TLS_README.gz in the postfix-doc package for\n# information on enabling SSL in the smtp client.\n\nmyhostname = hosting.unila.ac.id\nalias_maps = hash:\/etc\/aliases\nalias_database = hash:\/etc\/aliases\nmyorigin = \/etc\/hosting.unila.ac.id, localhost.unila.ac.id, localhost.localdomain, localhost\nrelayhost =\nmynetworks = 127.0.0.0\/8\nmailbox_command = procmail -a \"$EXTENSION\"\nmailbox_size_limit = 0\nrecipient_delimiter = +\ninet_interfaces = all\ninet_protocols = all\nsmtpd_sasl_local_domain =\nsmtpd_sasl_auth_enable = yes\nsmtpd_sasl_security_options = noanonymous\nbroken_sasl_auth_clients = yes\nsmtpd_sasl_authenticated_header = yes\nsmtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination\nsmtpd_tls_auth_only = no\nsmtp_use_tls = yes\nsmtp_tls_note_starttls_offer = yes\nsmtpd_tls_CAfile = \/etc\/postfix\/ssl\/cacert.pem\nsmtpd_tls_loglevel = 1\nsmtpd_tls_received_header = yes\nsmtpd_tls_session_cache_timeout = 3600s\ntls_random_source = dev:\/dev\/urandom<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Authentication will be done by saslauthd. We have to change a few things to make it work properly. Because Postfix runs chrooted in \/var\/spool\/postfix  we have to do the following:<\/p>\n<div>\n<div>&lt;!&#8211; document.write(&#039;<\/p>\n<div align=\"center\">&#8216;); \/\/&#8211;&gt;<\/p>\n<div><!-- Begin Adify tag for \"HowtoForge Rectangle B\" Ad Space (300x250) ID #4098007 --> sr_adspace_id = 4098007; sr_adspace_width = 300; sr_adspace_height = 250; sr_adspace_type = &#8220;graphic&#8221;; sr_ad_new_window = true;<!-- google_ad_client = \"pub-3043223216276099\"; \/* Rectangle B Howtos 300x250 (howtoforge.com) *\/ google_ad_slot = \"5716459207\"; google_ad_width = 300; google_ad_height = 250; \/\/--> window.google_render_ad();<\/p>\n<div><!-- Start Quantcast tag --> _qoptions={   qacct:&#8221;p-25K88fxDSEn9Y&#8221;,   labels:&#8221;IDG Tech Network&#8221; };    <a href=\"http:\/\/www.quantcast.com\/p-25K88fxDSEn9Y\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/pixel.quantserve.com\/pixel\/p-25K88fxDSEn9Y.gif\" border=\"0\" alt=\"Quantcast\" width=\"1\" height=\"1\" \/><\/a> <!-- End Quantcast tag --><\/div>\n<p><!-- End Adify tag for \"HowtoForge Rectangle B\" Ad Space (300x250) ID #4098007 --> &lt;!&#8211; document.write(&#039;<\/div>\n<p>&#8216;); \/\/&#8211;&gt;<\/p><\/div>\n<\/div>\n<\/div>\n<p>mkdir -p \/var\/spool\/postfix\/var\/run\/saslauthd<\/p>\n<p>Now we have to edit \/etc\/default\/saslauthd in order to activate saslauthd. Set START to yes and change the line OPTIONS=&#8221;-c -m \/var\/run\/saslauthd&#8221; to OPTIONS=&#8221;-c -m \/var\/spool\/postfix\/var\/run\/saslauthd -r&#8221;:<\/p>\n<p>vi \/etc\/default\/saslauthd<\/p>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\" width=\"90%\" align=\"center\" bgcolor=\"#cccccc\">\n<tbody>\n<tr>\n<td>\n<pre>#\n# Settings for saslauthd daemon\n# Please read \/usr\/share\/doc\/sasl2-bin\/README.Debian for details.\n#\n\n# Should saslauthd run automatically on startup? (default: no)\nSTART=yes\n\n# Description of this saslauthd instance. Recommended.\n# (suggestion: SASL Authentication Daemon)\nDESC=\"SASL Authentication Daemon\"\n\n# Short name of this saslauthd instance. Strongly recommended.\n# (suggestion: saslauthd)\nNAME=\"saslauthd\"\n\n# Which authentication mechanisms should saslauthd use? (default: pam)\n#\n# Available options in this Debian package:\n# getpwent  -- use the getpwent() library function\n# kerberos5 -- use Kerberos 5\n# pam       -- use PAM\n# rimap     -- use a remote IMAP server\n# shadow    -- use the local shadow password file\n# sasldb    -- use the local sasldb database file\n# ldap      -- use LDAP (configuration is in \/etc\/saslauthd.conf)\n#\n# Only one option may be used at a time. See the saslauthd man page\n# for more information.\n#\n# Example: MECHANISMS=\"pam\"\nMECHANISMS=\"pam\"\n\n# Additional options for this mechanism. (default: none)\n# See the saslauthd man page for information about mech-specific options.\nMECH_OPTIONS=\"\"\n\n# How many saslauthd processes should we run? (default: 5)\n# A value of 0 will fork a new process for each connection.\nTHREADS=5\n\n# Other options (default: -c -m \/var\/run\/saslauthd)\n# Note: You MUST specify the -m option or saslauthd won't run!\n#\n# See \/usr\/share\/doc\/sasl2-bin\/README.Debian for Debian-specific information.\n# See the saslauthd man page for general information about these options.\n#\n# Example for postfix users: \"-c -m \/var\/spool\/postfix\/var\/run\/saslauthd\"\n#OPTIONS=\"-c -m \/var\/run\/saslauthd\"\nOPTIONS=\"-c -m \/var\/spool\/postfix\/var\/run\/saslauthd -r\"<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Next add the postfix user to the sasl group (this makes sure that Postfix has the permission to access saslauthd):<\/p>\n<blockquote><p><strong><em>adduser postfix sasl <\/em><\/strong><\/p><\/blockquote>\n<p>Now restart Postfix and start saslauthd:<\/p>\n<blockquote><p><strong><em>\/etc\/init.d\/postfix restart<br \/>\n\/etc\/init.d\/saslauthd start<\/em><\/strong><\/p><\/blockquote>\n<p>To see if SMTP-AUTH and TLS work properly now run the following command:<\/p>\n<blockquote><p><strong><em>telnet localhost 25<\/em><\/strong><\/p><\/blockquote>\n<p>After you have established the connection to your Postfix mail server type<\/p>\n<p>ehlo localhost<\/p>\n<p>If you see the lines<\/p>\n<p>250-STARTTLS<\/p>\n<p>and<\/p>\n<p>250-AUTH LOGIN PLAIN<\/p>\n<p>everything is fine.<\/p>\n<p>The output on my system looks like this:<\/p>\n<p>root@hosting:\/etc\/postfix\/ssl# telnet localhost 25<br \/>\nTrying 127.0.0.1&#8230;<br \/>\nConnected to localhost.localdomain.<br \/>\nEscape character is &#8216;^]&#8217;.<br \/>\n220 hosting.unila.ac.id\u00a0 ESMTP Postfix (Ubuntu)<br \/>\nehlo localhost<br \/>\n250-hosting.unila.ac.id<br \/>\n250-PIPELINING<br \/>\n250-SIZE 10240000<br \/>\n250-VRFY<br \/>\n250-ETRN<br \/>\n250-STARTTLS<br \/>\n250-AUTH LOGIN PLAIN<br \/>\n250-AUTH=LOGIN PLAIN<br \/>\n250-ENHANCEDSTATUSCODES<br \/>\n250-8BITMIME<br \/>\n250 DSN<br \/>\nquit<br \/>\n221 2.0.0 Bye<br \/>\nConnection closed by foreign host.<br \/>\nroot@hosting:\/etc\/postfix\/ssl#<\/p>\n<p>Type<\/p>\n<p>quit<\/p>\n<p>to return to the system&#8217;s shell.<\/p>\n<h3>12.\u00a0 Courier-IMAP\/Courier-POP3<\/h3>\n<p>Run this to install Courier-IMAP\/Courier-IMAP-SSL (for IMAPs on port 993) and Courier-POP3\/Courier-POP3-SSL (for POP3s on port 995):<\/p>\n<blockquote><p><em><strong>apt-get install courier-authdaemon courier-base courier-imap courier-imap-ssl courier-pop courier-pop-ssl courier-ssl gamin libgamin0 libglib2.0-0 <\/strong><\/em><\/p><\/blockquote>\n<p>You will be asked two questions:<\/p>\n<p>Create directories for web-based administration? &lt;&#8211; No<br \/>\nSSL certificate required &lt;&#8211; Ok<\/p>\n<p>If you do not want to use ISPConfig, configure Postfix to deliver emails to a user&#8217;s Maildir*:<\/p>\n<blockquote><p><em><strong>postconf -e &#8216;home_mailbox = Maildir\/&#8217;<br \/>\npostconf -e &#8216;mailbox_command =&#8217;<br \/>\n\/etc\/init.d\/postfix restart<\/strong><\/em><\/p><\/blockquote>\n<p><strong>*Please note:<\/strong> You do not have to do this if you intend to use <a href=\"http:\/\/www.ispconfig.org\/\" target=\"_blank\">ISPConfig<\/a> on your system as ISPConfig does the necessary configuration using procmail recipes. But please go sure to enable Maildir under Management -&gt; Server -&gt; Settings -&gt; EMail in the ISPConfig web interface.<\/p>\n<h3>13.\u00a0 Apache\/PHP5\/Ruby<\/h3>\n<p>Now we install Apache:<\/p>\n<blockquote><p><em><strong>apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert<\/strong><\/em><\/p><\/blockquote>\n<p>Next we install PHP5 and Ruby (both as Apache modules):<\/p>\n<blockquote><p><strong><em>apt-get install libapache2-mod-php5 libapache2-mod-ruby php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl<\/em><\/strong><\/p><\/blockquote>\n<p>Next we edit \/etc\/apache2\/mods-available\/dir.conf:<\/p>\n<blockquote><p><em><strong>vi \/etc\/apache2\/mods-available\/dir.conf<\/strong><\/em><\/p><\/blockquote>\n<p>and change the DirectoryIndex line:<\/p>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\" width=\"90%\" align=\"center\" bgcolor=\"#cccccc\">\n<tbody>\n<tr>\n<td>\n<pre>&lt;IfModule mod_dir.c&gt;\n\n          #DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm\n          DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl index.xhtml\n\n&lt;\/IfModule&gt;<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Now we have to enable some Apache modules (SSL, rewrite, suexec, and include):<\/p>\n<blockquote><p><em><strong>a2enmod ssl<br \/>\na2enmod rewrite<br \/>\na2enmod suexec<br \/>\na2enmod include<\/strong><\/em><\/p><\/blockquote>\n<p>Reload the Apache configuration:<\/p>\n<blockquote><p><strong><em>\/etc\/init.d\/apache2 force-reload<\/em><\/strong><\/p><\/blockquote>\n<p>In the next chapter (17.1) we are going to disable PHP (this is necessary only if you want to install ISPConfig on this server). Unlike PHP, Ruby is disabled by default, therefore we don&#8217;t have to do it.<\/p>\n<h4>14.\u00a0 Disable PHP Globally<\/h4>\n<p>(If you do not plan to install ISPConfig on this server, please skip this section!)<\/p>\n<p>In ISPConfig you will configure PHP on a per-website basis, i.e. you can specify which website can run PHP scripts and which one cannot. This can only work if PHP is disabled globally because otherwise all websites would be able to run PHP scripts, no matter what you specify in ISPConfig.<\/p>\n<p>To disable PHP globally, we edit \/etc\/mime.types and comment out the application\/x-httpd-php lines:<\/p>\n<p>vi \/etc\/mime.types<\/p>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\" width=\"90%\" align=\"center\" bgcolor=\"#cccccc\">\n<tbody>\n<tr>\n<td>\n<pre>[...]\n#application\/x-httpd-php                                phtml pht php\n#application\/x-httpd-php-source                 phps\n#application\/x-httpd-php3                       php3\n#application\/x-httpd-php3-preprocessed          php3p\n#application\/x-httpd-php4                       php4\n[...]<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Edit \/etc\/apache2\/mods-enabled\/php5.conf and comment out the following lines:<\/p>\n<blockquote><p><strong><em>vi \/etc\/apache2\/mods-enabled\/php5.conf<\/em><\/strong><\/p><\/blockquote>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\" width=\"90%\" align=\"center\" bgcolor=\"#cccccc\">\n<tbody>\n<tr>\n<td>\n<pre>&lt;IfModule mod_php5.c&gt;\n  #AddType application\/x-httpd-php .php .phtml .php3\n  #AddType application\/x-httpd-php-source .phps\n&lt;\/IfModule&gt;<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Then restart Apache:<\/p>\n<blockquote><p><strong><em>\/etc\/init.d\/apache2 restart<\/em><\/strong><\/p><\/blockquote>\n<h3>15.\u00a0 Proftpd<\/h3>\n<p>In order to install Proftpd, run<\/p>\n<blockquote><p><strong><em>apt-get install proftpd ucf<\/em><\/strong><\/p><\/blockquote>\n<p>You will be asked a question:<\/p>\n<p>Run proftpd: &lt;&#8211; standalone<\/p>\n<p>For security reasons add the following lines to \/etc\/proftpd\/proftpd.conf (thanks to Reinaldo Carvalho; more information can be found here: <a href=\"http:\/\/proftpd.org\/localsite\/Userguide\/linked\/userguide.html\" target=\"_blank\">http:\/\/proftpd.org\/localsite\/Userguide\/linked\/userguide.html<\/a>):<\/p>\n<blockquote><p><strong><em>vi \/etc\/proftpd\/proftpd.conf<\/em><\/strong><\/p><\/blockquote>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\" width=\"90%\" align=\"center\" bgcolor=\"#cccccc\">\n<tbody>\n<tr>\n<td>\n<pre>[...]\nDefaultRoot ~\nIdentLookups off\nServerIdent on \"FTP Server ready.\"\n[...]<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>ISPConfig expects the configuration to be in \/etc\/proftpd.conf instead of \/etc\/proftpd\/proftpd.conf, therefore we create a symlink (you can skip this command if you don&#8217;t want to install ISPConfig):<\/p>\n<div>\n<div>&lt;!&#8211; document.write(&#039;<\/p>\n<div align=\"center\">&#8216;); \/\/&#8211;&gt;<\/p>\n<div><!-- Begin Adify tag for \"HowtoForge Rectangle B\" Ad Space (300x250) ID #4098007 --> sr_adspace_id = 4098007; sr_adspace_width = 300; sr_adspace_height = 250; sr_adspace_type = &#8220;graphic&#8221;; sr_ad_new_window = true;<!-- google_ad_client = \"pub-3043223216276099\"; \/* Rectangle B Howtos 300x250 (howtoforge.com) *\/ google_ad_slot = \"5716459207\"; google_ad_width = 300; google_ad_height = 250; \/\/--> window.google_render_ad();<\/p>\n<div><!-- Start Quantcast tag --> _qoptions={   qacct:&#8221;p-25K88fxDSEn9Y&#8221;,   labels:&#8221;IDG Tech Network&#8221; };    <a href=\"http:\/\/www.quantcast.com\/p-25K88fxDSEn9Y\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/pixel.quantserve.com\/pixel\/p-25K88fxDSEn9Y.gif\" border=\"0\" alt=\"Quantcast\" width=\"1\" height=\"1\" \/><\/a> <!-- End Quantcast tag --><\/div>\n<p><!-- End Adify tag for \"HowtoForge Rectangle B\" Ad Space (300x250) ID #4098007 --> &lt;!&#8211; document.write(&#039;<\/div>\n<p>&#8216;); \/\/&#8211;&gt;<\/p><\/div>\n<\/div>\n<\/div>\n<p><strong><em>ln -s \/etc\/proftpd\/proftpd.conf \/etc\/proftpd.conf<\/em><\/strong><\/p>\n<p>Then restart Proftpd:<\/p>\n<blockquote><p><strong><em>\/etc\/init.d\/proftpd restart<\/em><\/strong><\/p><\/blockquote>\n<h3>16.\u00a0 Webalizer<\/h3>\n<p>To install webalizer, just run<\/p>\n<blockquote><p><em><strong>apt-get install webalizer<\/strong><\/em><\/p><\/blockquote>\n<h3>17.\u00a0 Synchronize the System Clock<\/h3>\n<p>It is a good idea to synchronize the system clock with an NTP (<strong>n<\/strong>etwork <strong>t<\/strong>ime <strong>p<\/strong>rotocol) server over the internet. Simply run<\/p>\n<blockquote><p><em><strong>apt-get install ntp ntpdate<\/strong><\/em><\/p><\/blockquote>\n<p>and your system time will always be in sync.<\/p>\n<h3>18.\u00a0 Install Some Perl Modules Needed By SpamAssassin (Comes With ISPConfig)<\/h3>\n<p>Run<\/p>\n<blockquote><p><em><strong>apt-get install libhtml-parser-perl libdb-file-lock-perl libnet-dns-perl<\/strong><\/em><\/p><\/blockquote>\n<h3>19.\u00a0 ISPConfig<\/h3>\n<p>The configuration of the server is now finished, and if you wish you can now install <a href=\"http:\/\/www.ispconfig.org\/\" target=\"_blank\">ISPConfig<\/a> on it. Please check out the ISPConfig installation manual: <a href=\"http:\/\/www.ispconfig.org\/manual_installation.htm\" target=\"_blank\">http:\/\/www.ispconfig.org\/manual_installation.htm<\/a><\/p>\n<h4>20.\u00a0 A Note On SuExec<\/h4>\n<p>If you want to run CGI scripts under suExec, you should specify \/var\/www as the home directory for websites created by ISPConfig as Ubuntu&#8217;s suExec is compiled with \/var\/www as Doc_Root. Run<\/p>\n<p>\/usr\/lib\/apache2\/suexec -V<\/p>\n<p>and the output should look like this:<\/p>\n<p>root@hosting:~#\u00a0\/usr\/lib\/apache2\/suexec\u00a0-V<br \/>\n-D\u00a0AP_DOC_ROOT=&#8221;\/var\/www&#8221;<br \/>\n-D\u00a0AP_GID_MIN=100<br \/>\n-D\u00a0AP_HTTPD_USER=&#8221;www-data&#8221;<br \/>\n-D\u00a0AP_LOG_EXEC=&#8221;\/var\/log\/apache2\/suexec.log&#8221;<br \/>\n-D\u00a0AP_SAFE_PATH=&#8221;\/usr\/local\/bin:\/usr\/bin:\/bin&#8221;<br \/>\n-D\u00a0AP_UID_MIN=100<br \/>\n-D\u00a0AP_USERDIR_SUFFIX=&#8221;public_html&#8221;<br \/>\nroot@hosting:~#<\/p>\n<p>So if you want to use suExec with ISPconfig, don&#8217;t change the default web root (which is \/var\/www) if you use expert mode during the ISPConfig installation (in standard mode you can&#8217;t change the web root anyway so you&#8217;ll be able to use suExec in any case).<\/p>\n<p>If All Step already done, now you can browse and manage via web browser<\/p>\n<p>ex\u00a0 <strong><em>https:\/\/hosting.unila.ac.id:81<\/em><\/strong><\/p>\n<p>If you get warning\u00a0 like this in your browser (Firefox)<\/p>\n<blockquote><p><strong><em>Secure Connection Failed<br \/>\nAn error occurred during a connection to hostname.net:81.<br \/>\nSSL received a record that exceeded the maximum permissible length.<br \/>\n(Error code: ssl_error_rx_record_too_long)<br \/>\nThe page you are trying to view can not be shown because the authenticity of the received data could not be verified.<\/p>\n<p>* Please contact the web site owners to inform them of this problem. <\/em><\/strong><\/p><\/blockquote>\n<p><strong><em>You can Follow this thread to Fix it <\/em><\/strong><\/p>\n<p><a href=\"http:\/\/www.how2forge.org\/forums\/showthread.php?p=147988\">http:\/\/www.how2forge.org\/forums\/showthread.php?p=147988<\/a><\/p>\n<p>default user\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<em><strong> : admin<\/strong><\/em><\/p>\n<p>default password<em><strong> : admin<\/strong><\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/unilanet.unila.ac.id\/%7Egigih\/images\/stories\/ispconfig.jpg\" border=\"0\" alt=\"\" width=\"698\" height=\"292\" \/><\/p>\n<h3>21 Links<\/h3>\n<ul>\n<li>Ubuntu: <a href=\"http:\/\/www.ubuntu.com\/\" target=\"_blank\">http:\/\/www.ubuntu.com<\/a><\/li>\n<li>ISPConfig: <a href=\"http:\/\/www.ispconfig.org\/\" target=\"_blank\">http:\/\/www.ispconfig.org<\/a><\/li>\n<li><a href=\"http:\/\/www.howtoforge.com\/perfect-server-ubuntu8.04-lts-p7\">http:\/\/www.howtoforge.com\/perfect-server-ubuntu8.04-lts-p7<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>To install such a system you will need the following: Ubuntu 8.04 LTS server CD, available here: ftp:\/\/releases.ubuntu.com\/releases\/hardy\/ubuntu-8.04-server-i386.iso a fast internet connection. Make sure Ubuntu instalation running success. Now we will prepare to install all software for ISPConfig deployment Type sudo -i on console , and\u00a0 type your root password 1.\u00a0 Install The SSH Server &hellip; <a href=\"https:\/\/dosen.unila.ac.id\/gigih\/2011\/02\/09\/isp-config-on-ubuntu-hardy-heron-chap\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;ISP Config on Ubuntu Hardy Heron Chap&#8221;<\/span><\/a><\/p>\n","protected":false},"author":25,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1348,5],"tags":[],"class_list":["post-142","post","type-post","status-publish","format-standard","hentry","category-kiat-sukses-menjadi-seorang-network-engineer-2","category-old-post-dari-unilanet"],"_links":{"self":[{"href":"https:\/\/dosen.unila.ac.id\/gigih\/wp-json\/wp\/v2\/posts\/142"}],"collection":[{"href":"https:\/\/dosen.unila.ac.id\/gigih\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dosen.unila.ac.id\/gigih\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dosen.unila.ac.id\/gigih\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/dosen.unila.ac.id\/gigih\/wp-json\/wp\/v2\/comments?post=142"}],"version-history":[{"count":0,"href":"https:\/\/dosen.unila.ac.id\/gigih\/wp-json\/wp\/v2\/posts\/142\/revisions"}],"wp:attachment":[{"href":"https:\/\/dosen.unila.ac.id\/gigih\/wp-json\/wp\/v2\/media?parent=142"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dosen.unila.ac.id\/gigih\/wp-json\/wp\/v2\/categories?post=142"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dosen.unila.ac.id\/gigih\/wp-json\/wp\/v2\/tags?post=142"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}