spamcheck transport output: exim: getting initial cwd failed: No such file or directory

ปัญหา

user ส่งอีเมลออกได้ แต่ปลายทางไม่ได้รับ ฝั่ง user จะได้รับ error ว่า local delivery failed ถ้าเช็คใน logs จะเห็น error ว่า spamcheck transport output: exim: getting initial cwd failed: No such file or directory

สาเหตุเกิดจาก ลบ โฟลเดอร์ใน /tmp เป็น tmp ของ exim ชื่อประมาณว่า systemd-private-67c09abb51664c5b85bfbd0b37fcd5ae-exim.service-tZ6tpz

วิธีแก้ไข

cd /usr/local/directadmin/custombuild
./build update
./build exim
./build exim_conf

แล้วอย่าเผลอไปลบ /tmp systemd-private-67c09abb51664c5b85bfbd0b37fcd5ae-exim.service-tZ6tpz ออก หรือถ้าเผลอลบ ก็ build ใหม่

การเข้า directadmin แบบ https

การเข้า directadmin แบบ https

เนื่องจากทางโฮสติ้งได้มีการตั้งค่า directadmin ให้เข้าแบบ https แทนการล็อกอิน http แบบเดิมค่ะ ดังนั้น เวลาเข้า directadmin โปรดเข้าผ่าน url แบบ https แทนค่ะ  โดยให้ท่านพิมพ์ลิ้งค์แบบเต็ม (full url) เช่น https://www.hosttook.net:2222/ (โดยเปลียน hosttook.net เป็นชื่อโดเมนของท่านค่ะ) เมื่อ enter แล้ว ระบบจะเข้าหน้าแจ้งตกใจ เตือนเรื่อง https not secure แต่ท่านไม่ต้องตกใจค่ะ เพราะเป็นเพียงการแจ้งว่า ลิ้งค์ https ที่จะล็อกอินเข้าไปนี้ เป็น https แบบ self signed เท่านั้นเองค่ะ ดังภาพด้านล่างนี้ค่ะ



ให้ทำการคลิ๊กที่ ADVANCED ได้เลยค่ะ เมื่อคลิ๊กแล้วจะเปิดหน้าถัดไป ให้เลื่อนลง แล้วคลิ๊กที่ process to …….(unsafe)  ดังภาพด้านล่างนี้ค่ะ

 

 

เมื่อคลิ๊กแล้วระบบจะเข้าหน้าล็อกอินให้ค่ะ ดังภาพด้านล่างนี้ค่ะ เมื่อท่านกรอก user/pass แล้ว ระบบก็จะล็อกอินเข้า directadmin แบบ https ให้ค่ะ สำหรับลูกค้าที่อยู่เครื่องใหม่ ที่มองเห็น directadmin เป็น https แบบมีรูปกุญแจสีเขียวแล้ว แปลว่า ทางโฮสติ้งได้ตั้งค่าให้สามารถใช้งาน https แบบฟรีของ let’s encrypt ซึ่งจะทำให้ท่านสามารถตั้งค่าให้เว็บไซต์ของท่านเข้าใช้งานแบบ https ได้ฟรีค่ะ

สำหรับการตั้งค่าให้เว็บไซต์สามารถเข้าแบบ https ได้นั้น (https แบบฟรีของ let’s encrypt) hosttook.com จะเขียนบทความแสดงวิธีตั้งค่าในบทความถัดไปค่ะ

 

หากท่านติดปัญหาการใช้งาน directadmin โปรดสอบถามเพิ่มเติมผ่านทางไลน์ได้ค่ะ

วิธีแก้ปัญหา joomla 3.0.3 แสดงภาพไม่ได้ image url ติด php_flag magic_quotes_gpc Off On

Joomla 3.0.3 แสดงภาพไม่ได้ติดเครื่องหมายแบคสแลช \images/ และวิธีแก้ไขให้แสดงภาพได้

เว็บไซต์ที่ทำด้วย joomla version 3.0 ขึ้นไป เช่น 3.0.1  3.0.2 , 3.0.3 หากแสดงภาพไม่ได้ เมื่อมีการ save บทความ url ของภาพจะเพิ่มเครื่องหมาย backslash (แบ็คสแลช) \ ให้อัตโนมัติ ทำให้เว็บไซต์แสดงภาพไม่ได้

เมื่อคลิ๊กขวาดูที่ url ของภาพ จะเห็นเป็น \imange/mypic.jpg

ทำให้ภาพแสดงไม่ได้เนื่องจากมีเครื่องหมาย \ เกินมา

สาเหตุการแสดงภาพไม่ได้ของ joomla 3.0.x เกิดจาก

โฮสติ้งที่ใช้งานอยู่ตั้งค่า php_flag magic_quotes_gpc On เพื่อป้องกันการทำ SQL injection สำหรับการเขียนโค๊ดแบบเก่า

ใน php 5.3 จะตัด ฟังก์ชั่นนี้ออกไปแล้ว ดังนั้น ถ้าเครื่องไหนที่ติดตั้ง php 5.3 ไว้จะขึ้นเป็น  magic_quotes_gpc is deprecated

แต่ที่บางโฮสติ้งยังต้องเปิด On ไว้อยู่เนื่องจากยังมีเว็บไซต์ของลูกค้าในเครื่องบางท่านที่ยังเขียนโค๊ดแบบเก่าอยู่

ดังนั้น สำหรับเว็บไซต์ที่ทำด้วย joomla 3.0.x ขึ้นไป ซึ่งตัวโปรแกรม joomla รุ่นนี้ต้องการให้ปิดการใช้งาน magic_quotes_gpc นี้ออกไป (Joomla require php_flag magic_quotes_gpc Off ) เพื่อให้สามารถแสดงตำแหน่งภาพ ( images url) ได้ถูกต้อง โปรดทำดังนี้

การปิด magic_quotes_gpc ทำได้ 2 วิธีคือ

1. กรณีสามารถเข้าแก้ไขไฟล์ config ของ server ได้ ให้เข้าไปแก้ไปที่ php.ini ได้เลยโดย

nano /usr/local/lib/php.ini

แล้วเปลี่ยนแถว

php_flag magic_quotes_gpc On เป็น ==> php_flag magic_quotes_gpc Off

แล้ว service httpd restart

2. กรณีเข้าไปแก้ไขไฟล์ php.ini ของ server ไม่ได้

ให้ไปเพิ่มค่าเข้าไปที่ไฟล์ .htaccess แทน

กรณีใช้ DirectAdmin ก็เข้าไปที่ File manager

แล้วเลื่อนหาไฟล์ชื่อ .htaccess แล้วกด edit แล้วเลื่อนลงท้ายไฟล์

แล้วเพิ่ม php_flag magic_quotes_gpc Off  เข้าไปได้เลย

แล้วกด save

หากไม่พบไฟล์ .htaccess อยู่ในนี้ ก็สามารถสร้างขึ้นมาใหม่ได้ ด้วย โปรแกรม notepad แล้ว save เป็นชื่อ “.htaccess” ไม่มีนามสกุล

แล้วอัพโหลด .htaccess ไปไว้ในโฟลเดอร์ที่ติดตั้ง joomla 3.0.x ไว้ค่ะ

เมื่อแก้ไขค่า magic_quotes_gpc ให้เป็น Off ได้แล้ว

ก็ล็อกอินเข้าไปแก้ไขบทความของ joomla ที่เคยแทรกภาพไว้แล้วแต่แสดงไม่ได้ ลบภาพเดิมออกก่อน แล้วกด แทรกภาพใหม่

เมื่อ save แล้ว คราวนี้ระบบก็จะไม่ใส่เครื่องหมาย \ หน้าโฟลเดอร์ images ให้อัตโนมัติอีกแล้ว ภาพในบทความ joomla ของท่านก็จะแสดงได้ตามปกติค่ะ

 

การตั้งค่าการเข้าใช้งาน DirectAdmin พอร์ต 80 สำหรับโดเมนเก่าที่อยู่ใน server ก่อนการตั้งค่า

กรณีที่ในบัญชีโฮสติ้งเราเคยมีลูกค้าอยู่ใน server ก่อนหน้านี้แล้ว แล้วเรามาตั้งค่า directadmin port 80 ภายหลัง จะทำให้เว็บไซต์ลูกค้าที่มีอยู่ก่อนหน้านี้ จะยังไม่สามารถใช้งาน directadmin port 80 ได้ เราต้องเข้าไปแก้ไขเพิ่ม a record ให้ทีละโดเมน ดังนี้
 
1. โปรดล็อกอินเข้า DirectAdmin ผ่านพอร์ตเดิมก่อน http://ชื่อโดเมน.com:2222 เสร็จแล้วไปที่เมนู  DNS Management ตามภาพด้านล่างค่ะ 
 
 
2. โปรดคลิ๊กเข้าไปด้านใน มองหา A Record ชื่อ cp หากมีแล้ว แสดงว่าโดเมนของท่านได้ถูกตั้งให้ใช้ DirectAdmin พอร์ต 80 ได้แล้ว แต่หากยังไม่มีให้ทำการเพิ่มค่ะ โดยพิมพ์ที่ช่องซ้ายมือว่า cp และช่องขวามือกรอกเลข ip address ของเครื่อง server ค่ะ แล้วกดปุ่ม add ค่ะ ตามภาพด้านล่างค่ะ
 
 
เสร็จแล้ว ระบบจะแสดง ข้อมูล cp a recode ที่ท่านได้เพิ่มเข้าไปดังภาพด้านล่างค่ะ
 
หลังจากนี้โปรดรอระบบทำการอัพเดทข้อมูลประมาณ 10 นาที ท่านก็จะสามารถเข้าใช้งาน Directadmin ผ่านพอร์ต 80 ได้ค่ะ อันนี้เหมาะสำหรับท่านที่ใช้เน็ตที่มีการบล็อกพอร์ต 2222 ค่ะ เช่น เน็ตบริษัท เน็ตโรงเรียน เน็ตโรงแรม  เน็ตหอพัก เป็นต้นค่ะ  จึงจำเป็นต้องเข้า directadmin ผ่านพอร์ต 80 แทนค่ะ
 
ลิ้งค์สำหรับเข้า DirectAdmin ผ่านพอร์ต 80 คือ http://cp.ชื่อโดเมน.สกุล 
 
 
 

การตั้งค่าให้สามารถเข้า DirectAdmin ผ่านพอร์ต 80 ได้

ท่านที่ใช้เน็ตของบริษัท เน็ตโรงเรียน เน็ตโรงแรม เน็ตหอพัก อาจประสบปัญหาเข้าใช้งาน DirectAdmin Control Panel ผ่านพอร์ต 2222 ไม่ได้เพราะหน่วยงานเหล่านั้น ไม่เปิดให้ใช้พอร์ต 2222

ดังนั้น เราจึงได้ตั้งค่าให้ลูกค้าสามารถเข้าใช้งาน  DirectAdmin ผ่านพอร์ต 80 ได้ด้วย ดังนี้

1. จะต้องทำการตั้งค่า Proxy URL ของ Directadmin ให้สามารถเข้าพอร์ต 80 โดยใช้ URL ว่า cp.ชื่อโดเมน.สกุล ทำได้ดังนี้ 

1. เข้า template ของ Direct Admin

                  cd /usr/local/directadmin/data/templates

2. copy ไฟล์ 

                   cp virtual_host2.conf custom/

3. ตรวจดูว่า มีการติดตั้ง mod_proxy ไว้แล้วหรือยัง
/usr/sbin/httpd -l |grep proxy

mod_proxy.c
mod_proxy_connect.c
mod_proxy_ftp.c
mod_proxy_http.c
mod_proxy_scgi.c
mod_proxy_ajp.c
mod_proxy_balancer.c

ถ้าได้ผลดังด้านบนแสดงว่าได้ทำไว้แล้ว ก็ทำขั้นต่อไปได้

4. แก้ไขไฟล์

nano custom/virtual_host2.conf
เพิ่มด้านล่างเข้าไป

ServerName cp.|DOMAIN|
ProxyRequests Off
ProxyPass / http://|เลขIPของเครื่อง|:2222/
ProxyPassReverse / http://|เลขIPของเครื่อง|:2222/

เช่น

<VirtualHost |IP|:80>
   ServerName cp.|DOMAIN|
   ProxyRequests Off
   ProxyPass / http://203.151.21.xxx:2222/
   ProxyPassReverse / http://203.151.21.xxx:2222/
</VirtualHost>

5. copy ไฟล์

cd /usr/local/directadmin/data/templates
cp dns_a.conf custom

6. เพิ่มค่า

echo “cp=|IP|” >> custom/dns_a.conf

ก็จะได้ค่าเป็น

localhost=127.0.0.1
|*if IS_IPV6!=”yes”|
|DOMAIN|.=|IP|
mail=|IP|
pop=|IP|
www=|IP|
ftp=|IP|
smtp=|IP|
|*endif|
cp=|IP|

7. เพิ่มค่า

nano /usr/local/directadmin/conf/directadmin.conf
check_referer=0

8. สั่ง

echo “action=rewrite&value=httpd” >> /usr/local/directadmin/data/task.queue

9. restart DirectAdmin และ httpd ใหม่

/etc/init.d/directadmin restart

/etc/init.d/httpd restart

10. ทดสอบการเข้าใช้งานด้วยการพิมพ์  http://cp.ชื่อโดเมน.com/

หมายเหตุ: ระบบจะสร้างให้สำหรับโดเมนที่เพิ่มเข้าไปใหม่ ส่วนโดเมนเก่า ต้องไป DNS management แล้วเพิ่ม a recode ของ cp = ip เข้าไปทีละอันค่ะ

วิธีแก้ปัญหา panic log ขึ้น User 0 set for local_delivery transport is on the never_users list

สาเหตุของปัญหา User 0 set for local_delivery transport is on the never_users list

ถ้าเห็น panic log ขึ้นรายงานว่า User 0 set for local_delivery transport is on the never_users list เกิดจากที่มีโปรแกรมบางตัวส่งอีเมลเข้า root
และค่าเริ่มต้นของ exim จะตั้งค่า never_users = root

วิธีแก้ปัญหา

forward root user ในไฟล์ /etc/aliasese ให้ส่งไปอีเมลที่มีอยู่จริงในเซิร์เวรอ์ด้วยคำสั่ง echo -e “root:\อีเมล@โดเมน.com” >> /etc/aliases

ถ้าเปิดไฟล์ดูด้วยคำสั่ง nano /etc/aliases
คำสั่งด้านบนจะเพิ่มแถวสุดท้ายของไฟล์ เช่น

# Person who should get root’s mail
#root: marc
diradmin: :blackhole:
root:\อีเมล@โดเมน.com

ผลลัพธ์:

ต่อไปนี้ error หรือ message ของ software ที่ตั้งค่าให้ส่งเข้า root จะถูกส่งไปที่อีเมลนี้แทนค่ะ และก็จะไม่มี panic log หัวข้อ User 0 set for local_delivery transport is on the never_users list นี้จะไม่มีให้เห็นอีกเลยค่ะ

mail-header-patch=yes is set in the options.conf, but is not required with this php version.

 ถ้ารัน ./build versions แล้วขึ้น error ว่า

mail-header-patch=yes is set in the options.conf, but is not required with this php version.
To enable the X-Mail header, set mail.add_x_header to 1 in your php.ini

วิธีแก้ปัญหา แก้ error

1. รัน ./build set mail-header-patch no

2. เปิดไฟล์ nano /usr/local/lib/php.ini

แล้วเพิ่มไปด้านล่าง

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = On

กดคอนโทรล x พิมพ์ y เพื่อ save

3. restart httpd ใหม่

service httpd restart

-จบ-

 

วิธีชี้ sub domain ไปยังโฮสติ้งเซิร์ฟเวอร์อื่น (how to point subdomain to different server)

การชี้ subdomain ไปยังเซิร์ฟเวอร์อื่นนี้มีข้อดีคือ เมื่อเซิร์ฟเวอร์โดเมนหลักล่ม ผู้ชมจะยังเข้าส่วนของ subdomain ได้อยู่ หากเิซิฟร์ฟเวอร์ปลายทางไม่ได้ล่มด้วยค่ะ

วิธีทำการชี้ sub domain ไปยังโฮสิ้งอื่น ทำได้ดังนี้

  1. ให้เข้า control panel ของโฮสติ้งที่แปะโดเมนหลักไว้ แล้วไปสร้าง Sub Domian ที่ต้องการ เช่น blog.xxx.com เมื่อเพิ่ม sub domain แล้ว ให้เข้าไปที่เมนู DNS management แล้ว มองหาช่อง blog และ www.blog ที่ระบบสร้างขึ้น โดย จะมี A Record เป็นเลขไอพีของเซิร์ฟเวอร์ที่โดเมนหลักแปะอยู่
  2. ให้เลื่อนลงด้านล่างสุด ไปช่อง A เพื่อเพิ่ม record ใหม่ โดยช่องด้านซ้ายให้กรอก blog  A  ช่องขวากรอก xx.xx.xx.xx. (เลขไอพี ของ host ปลายทาง) กด add ดังภาพ 
  3. เพิ่มอีก www.blog A xx.xx.xx.xx (เลขไอพี ของ host ปลายทาง) กด add ดังภาพ 
  4. เมื่อเสร็จแล้ว ให้ไปที่โฮสปลายทาง ไปที่เมนู add another domain แล้วเพิ่มโดเมนช ื่อ blog.xxx.com 
  5. หลังจากนั้น รอ dns อัพเดท ก็จะสามารถเข้า blog.xxx.com ที่ host ต้นทาง แต่เนื้อหาเว็บจะถูกสร้างที่ host ปลายทาง หรือ ชื่อ subdomain กับ เนื้อหาของเว็บใน subdomain อยู่คนละเครื่องเซิร์ฟเวอร์หรือคนละโฮสติ้งกันนั่นเองค่ะ