2018년 11월 29일 목요일

[APACHE] failed No route to host

[APACHE] failed No route to host



[root@vps ~]# wget http://www.example.com:8080
--2018-11-29 10:37:56--  http://www.example.com:8080/
Resolving www.example.com (www.example.com)... xxx.xxx.xxx.xxx
Connecting to www.example.com (www.example.com)|xxx.xxx.xxx.xxx|:8080... failed: No route to host.

/etc/sysconfig/iptables add rule

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT

2018년 11월 16일 금요일

[MySQL] Unknown collation utf8mb4_unicode_520_ci

[MySQL] Unknown collation utf8mb4_unicode_520_ci



ERROR 1273 (HY000) at line 25: Unknown collation: 'utf8mb4_unicode_520_ci'

CREATE TABLE `wp_commentmeta` (
  `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `comment_id` bigint(20) unsigned NOT NULL DEFAULT '0',
  `meta_key` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
  `meta_value` longtext COLLATE utf8mb4_unicode_520_ci,
  PRIMARY KEY (`meta_id`),
  KEY `comment_id` (`comment_id`),
  KEY `meta_key` (`meta_key`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

Swapping
    utf8mb4_unicode_520_ci => utf8_general_ci

ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
=>
ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;


2018년 11월 15일 목요일

[CentOS] How to restore Factory setting

[CentOS] How to restore Factory setting



# yum history list all
Loaded plugins: fastestmirror
ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
    22 | root <root>              | 2018-10-19 15:13 | Update         |    7
    21 | root <root>              | 2018-09-11 14:07 | Install        |   10
    20 | root <root>              | 2018-09-11 14:07 | Erase          |    8
    19 | System <unset>           | 2018-09-11 10:24 | Update         |    3
    18 | root <root>              | 2017-12-07 10:07 | Install        |    1
    17 | root <root>              | 2017-11-24 12:26 | Install        |    1
    16 | root <root>              | 2017-11-24 12:25 | Install        |    2
    15 | root <root>              | 2017-11-24 12:23 | Install        |    2
    14 | root <root>              | 2017-11-24 12:22 | Install        |    6
    13 | root <root>              | 2017-11-05 09:48 | Install        |   22
    12 | root <root>              | 2017-10-29 10:44 | Install        |    1
    11 | root <root>              | 2017-10-29 10:36 | I, O, U        |   41
    10 | root <root>              | 2017-10-29 10:36 | Install        |    5
     9 | root <root>              | 2017-10-29 00:20 | Install        |   18
     8 | root <root>              | 2017-10-29 00:20 | Install        |   30
     7 | root <root>              | 2017-10-29 00:19 | Update         |    1 EE
     6 | root <root>              | 2017-10-17 16:54 | Install        |    3
     5 | root <root>              | 2017-10-17 16:52 | Install        |  218 EE
     4 | root <root>              | 2017-10-17 16:51 | Update         |    3
     3 | root <root>              | 2017-09-20 13:54 | Install        |    1
     2 | root <root>              | 2017-09-20 13:52 | I, U           |   28
     1 | System <unset>           | 2017-09-14 12:20 | Install        |  291
history list

# yum history info 22

# yum -y history undo 22
# yum -y history undo 21
# yum -y history undo ...
# yum -y history undo 1

2018년 11월 9일 금요일

윈도우10 안쓰는 기본앱 제거하기

윈도우10 안쓰는 기본앱 제거하기


윈도우 기본적으로 설치된 앱 중에서 사용하지 않으면서 용량을 차지하는 앱들이 있습니다.
물론 얼마되지 않는 사이즈이지만 조금이나마 C 드라이브 공간을 늘이는 방법입니다.

PowerShell 을 관리자권한으로 실행해서 아래 명령어로 삭제하면 됩니다.

계산기
Get-AppxPackage *windowscalculator* | Remove-AppxPackage
날씨
Get-AppxPackage *bingweather* | Remove-AppxPackage
메일 및 일정
Get-AppxPackage *windowscommunicationsapps* | Remove-AppxPackage
윈도우폰
Get-AppxPackage *windowsphone* | Remove-AppxPackage
3D빌더
Get-AppxPackage *3dbuilder* | Remove-AppxPackage
알람 및 시계
Get-AppxPackage *windowsalarms* | Remove-AppxPackage
카메라
Get-AppxPackage *windowscamera* | Remove-AppxPackage
영화 및 TV
Get-AppxPackage *zunevideo* | Remove-AppxPackage
오피스
Get-AppxPackage *officehub* | Remove-AppxPackage
음성 녹음기
Get-AppxPackage *soundrecorder* | Remove-AppxPackage
시작
Get-AppxPackage *getstarted* | Remove-AppxPackage
지도
Get-AppxPackage *windowsmaps* | Remove-AppxPackage
피플
Get-AppxPackage *people* | Remove-AppxPackage
Groove 음악
Get-AppxPackage *zunemusic* | Remove-AppxPackage
Microsoft Store
Get-AppxPackage *windowsstore* | Remove-AppxPackage
Skype
Get-AppxPackage *skypeapp* | Remove-AppxPackage
Xbox
Get-AppxPackage *xboxapp* | Remove-AppxPackage

CCleaner Free 유틸리티로 지우면 좀 더 편하게 지울 수 있습니다.




2018년 11월 8일 목요일

VirtualBox VERR_VD_IMAGE_READ_ONLY

VirtualBox VERR_VD_IMAGE_READ_ONLY



VirtualBox 에서 이미 만들어진 VHD 파일을 디스크로 연결해서 실행하면

Failed to open image 'vhd경로' for writing due to wrong permissions
(VERR_VD_IMAGE_READ_ONLY).
AHCI: Failed to attach drive to Port0
(VERR_VD_IMAGE_READ_ONLY).

이렇게 오류가 나오면서 세션을 열 수 없습니다.



이 문제는 VirtualBox 를 관리자 권한으로 실행하면 됩니다.

2018년 10월 12일 금요일

CentOS 7.x Postfix + Dovecot + MySQL + RoundCube Webmail

CentOS 7.x Postfix + Dovecot + MySQL + RoundCube Webmail




# yum install postfix dovecot dovecot-mysql roundcubemail

# useradd -u 5000 -d /home/vmail -s /sbin/nologin -m vmail


CREATE DATABASE webmail;
GRANT ALL PRIVILEGES ON webmail.* TO webmail@localhost IDENTIFIED BY 'dbpassword';


CREATE TABLE `webmail`.`virtual_domains` (
 `id` INT NOT NULL AUTO_INCREMENT,
 `name` VARCHAR(50) NOT NULL,
 PRIMARY KEY (`id`)
 ) DEFAULT CHARSET=utf8;

CREATE TABLE `webmail`.`virtual_users` (
 `id` INT NOT NULL AUTO_INCREMENT,
 `password` VARCHAR(106) NOT NULL,
 `email` VARCHAR(80) NOT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `email` (`email`)
 ) DEFAULT CHARSET=utf8;

CREATE TABLE `webmail`.`virtual_aliases` (
 `id` INT NOT NULL AUTO_INCREMENT,
 `source` varchar(100) NOT NULL,
 `destination` varchar(100) NOT NULL,
 PRIMARY KEY (`id`)
 ) DEFAULT CHARSET=utf8;

INSERT INTO `webmail`.`virtual_domains` (`id` ,`name`) VALUES
 ('1', 'aaa.com'),
 ('2', 'bbb.com'),
 ('3', 'example.com');

INSERT INTO `webmail`.`virtual_users` (`id`, `password`, `email`) VALUES
 ('1', ENCRYPT('userpassword', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'user1@aaa.com'),
 ('2', ENCRYPT('userpassword', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'user2@aaa.com'),
 ('3', ENCRYPT('userpassword', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'user1@bbb.com'),
 ('4', ENCRYPT('userpassword', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'user2@bbb.com'),
 ('5', ENCRYPT('userpassword', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'user1@example.com'),
 ('6', ENCRYPT('userpassword', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'user2@example.com');

INSERT INTO `webmail`.`virtual_aliases` (`id`, `source`, `destination`) VALUES
 ('1', 'alias@aaa.com', 'user1@aaa.com'),
 ('2', 'user2@example.com', 'user1@example.com');


# vi /etc/postfix/mysql-virtual-alias-maps.cf
hosts = 127.0.0.1
dbname = webmail
user = webmail
password = dbpassword
query = SELECT destination FROM virtual_aliases WHERE source='%s'

# vi /etc/postfix/mysql-virtual-users.cf
hosts = 127.0.0.1
dbname = webmail
user = webmail
password = dbpassword
query = SELECT email FROM virtual_users WHERE email='%s'

# vi /etc/postfix/mysql-virtual-mailbox-domains.cf
hosts = 127.0.0.1
dbname = webmail
user = webmail
password = dbpassword
query = SELECT name FROM virtual_domains WHERE name='%s'

# vi /etc/postfix/mysql-virtual-mailbox-maps.cf
hosts = 127.0.0.1
dbname = webmail
user = webmail
password = dbpassword
query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM virtual_users WHERE email='%s'

# chgrp postfix /etc/postfix/mysql-virtual-*.cf
# chmod o= /etc/postfix/mysql-virtual-*.cf


# vi /etc/postfix/main.cf
myhostname = mail.example.com
mydestination = localhost
mynetworks = 127.0.0.0/8
inet_interfaces = all
message_size_limit = 30720000
virtual_alias_domains =
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual-alias-maps.cf, mysql:/etc/postfix/mysql-virtual-users.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_mailbox_base = /home/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem
smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1


# vi /etc/postfix/master.cf
dovecot   unix  -       n       n       -       -       pipe
    flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}

submission inet n       -       n       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_reject_unlisted_recipient=no
  #-o smtpd_client_restrictions=$mua_client_restrictions
  #-o smtpd_helo_restrictions=$mua_helo_restrictions
  #-o smtpd_sender_restrictions=$mua_sender_restrictions
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
smtps     inet  n       -       n       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_reject_unlisted_recipient=no
  #-o smtpd_client_restrictions=$mua_client_restrictions
  #-o smtpd_helo_restrictions=$mua_helo_restrictions
  #-o smtpd_sender_restrictions=$mua_sender_restrictions
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING



# systemctl restart postfix
# systemctl status postfix
# postmap -q alias@aaa.com mysql:/etc/postfix/mysql-virtual-alias-maps.cf
# postmap -q user1@aaa.com mysql:/etc/postfix/mysql-virtual-users.cf
# postmap -q aaa.com mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
# postmap -q user1@aaa.com mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf


# mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.ori
# vi /etc/dovecot/dovecot.conf
protocols = imap pop3
listen = *
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_location = maildir:/home/vmail/%d/%n/Maildir

ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem

namespace {
    type = private
    separator = .
    prefix = INBOX.
    inbox = yes
}

service auth {
    unix_listener auth-master {
        mode = 0600
        user = vmail
    }
    unix_listener /var/spool/postfix/private/auth {
        mode = 0666
        user = postfix
        group = postfix
    }
    user = root
}

service auth-worker {
    user = root
}

protocol lda {
    log_path = /home/vmail/dovecot-deliver.log
    auth_socket_path = /var/run/dovecot/auth-master
    postmaster_address = postmaster@example.com
}

protocol pop3 {
    pop3_uidl_format = %08Xu%08Xv
}

passdb {
    driver = sql
    args = /etc/dovecot/dovecot-sql.conf.ext
}

userdb {
    driver = static
    args = uid=vmail gid=vmail home=/home/vmail/%d/%n allow_all_users=yes
}

# vi /etc/dovecot/dovecot-sql.conf.ext
driver = mysql
connect = host=127.0.0.1 dbname=webmail user=webmail password=dbpassword
default_pass_scheme = SHA512-CRYPT
password_query = SELECT email as user, password FROM virtual_users WHERE email='%u';

# chown vmail:dovecot /etc/dovecot
# chown vmail:dovecot /etc/dovecot/dovecot.conf
# chown vmail:dovecot /etc/dovecot/dovecot-sql.conf.ext
# chmod o= /etc/dovecot/dovecot-sql.conf.ext

 systemctl restart postfix
 systemctl restart dovecot
 tail -n15 /var/log/maillog


# mysql -u webmail -p webmail < /usr/share/roundcubemail/SQL/mysql.initial.sql

# cp -p /etc/roundcubemail/config.inc.php.sample /etc/roundcubemail/config.inc.php
# vi /etc/roundcubemail/config.inc.php
$config['db_dsnw'] = 'mysql://webmail:dbpassword@localhost/webmail';
$config['product_name'] = 'Webmail'; // HTML Title

# vi /etc/httpd/conf.d/roundcubemail.conf
<Directory /usr/share/roundcubemail/>
    <IfModule mod_authz_core.c>
        # Apache 2.4
        Require local
        Require all granted
    </IfModule>
</Directory>
<Directory /usr/share/roundcubemail/installer/>
    <IfModule mod_authz_core.c>
        # Apache 2.4
        Require local
        Require ip xxx.xxx.xxx.xxx
    </IfModule>
</Directory>
# vi /etc/httpd/conf.d/webmail.example.com.conf
<VirtualHost *:80>
    ServerName webmail.example.com
    DocumentRoot /usr/share/roundcubemail
    ErrorLog logs/webmail.example.com-error_log
    LogFormat "%V %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" vcommon
    CustomLog logs/webmail.example.com-access_log vcommon
</VirtualHost>
# systemctl restart httpd