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


2017년 8월 14일 월요일

CentOS 7.x nslookup yum install

CentOS 7.x nslookup yum install



[root@ctb ~]# nslookup
-bash: nslookup: command not found

[root@ctb ~]# yum install bind-utils
......
================================================================================
 Package             Arch        Version                     Repository    Size
================================================================================
Installing:
 bind-utils          x86_64      32:9.9.4-50.el7_3.1         updates      202 k
Installing for dependencies:
 bind-libs           x86_64      32:9.9.4-50.el7_3.1         updates      1.0 M
Updating for dependencies:
 bind-libs-lite      x86_64      32:9.9.4-50.el7_3.1         updates      730 k
 bind-license        noarch      32:9.9.4-50.el7_3.1         updates       83 k

Transaction Summary
================================================================================
Install  1 Package  (+1 Dependent package)
Upgrade             ( 2 Dependent packages)

Total download size: 2.0 M
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/4): bind-libs-lite-9.9.4-50.el7_3.1.x86_64.rpm          | 730 kB   00:02
(2/4): bind-license-9.9.4-50.el7_3.1.noarch.rpm            |  83 kB   00:01
(3/4): bind-libs-9.9.4-50.el7_3.1.x86_64.rpm               | 1.0 MB   00:01
(4/4): bind-utils-9.9.4-50.el7_3.1.x86_64.rpm              | 202 kB   00:02
--------------------------------------------------------------------------------
Total                                              735 kB/s | 2.0 MB  00:02
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : 32:bind-license-9.9.4-50.el7_3.1.noarch                      1/6
  Installing : 32:bind-libs-9.9.4-50.el7_3.1.x86_64                         2/6
  Installing : 32:bind-utils-9.9.4-50.el7_3.1.x86_64                        3/6
  Updating   : 32:bind-libs-lite-9.9.4-50.el7_3.1.x86_64                    4/6
  Cleanup    : 32:bind-libs-lite-9.9.4-38.el7_3.3.x86_64                    5/6
  Cleanup    : 32:bind-license-9.9.4-38.el7_3.3.noarch                      6/6
  Verifying  : 32:bind-license-9.9.4-50.el7_3.1.noarch                      1/6
  Verifying  : 32:bind-libs-lite-9.9.4-50.el7_3.1.x86_64                    2/6
  Verifying  : 32:bind-utils-9.9.4-50.el7_3.1.x86_64                        3/6
  Verifying  : 32:bind-libs-9.9.4-50.el7_3.1.x86_64                         4/6
  Verifying  : 32:bind-libs-lite-9.9.4-38.el7_3.3.x86_64                    5/6
  Verifying  : 32:bind-license-9.9.4-38.el7_3.3.noarch                      6/6

Installed:
  bind-utils.x86_64 32:9.9.4-50.el7_3.1

Dependency Installed:
  bind-libs.x86_64 32:9.9.4-50.el7_3.1

Dependency Updated:
  bind-libs-lite.x86_64 32:9.9.4-50.el7_3.1
  bind-license.noarch 32:9.9.4-50.el7_3.1

Complete!

2017년 6월 16일 금요일

PHPExcel 비밀번호 설정 기능 동작안함

PHPExcel 비밀번호 설정 기능 동작안함



1.8.0 버전에서 아래코드로 확인한 바 작동하지 않는다.


$objPHPExcel->getSecurity()->setLockWindows(true);
$objPHPExcel->getSecurity()->setLockStructure(true);
$objPHPExcel->getSecurity()->setWorkbookPassword('1234');

이 코드도 안되고

$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$objPHPExcel->getActiveSheet()->getProtection()->setSort(true);
$objPHPExcel->getActiveSheet()->getProtection()->setInsertRows(true);
$objPHPExcel->getActiveSheet()->getProtection()->setFormatCells(true);
$objPHPExcel->getActiveSheet()->getProtection()->setPassword('1234');

이 코드도 먹히지 않는다.


안되는데 함수는 왜 있는걸까??

엑셀문서에 암호를 거는 방법은 정말 없단말인가~~

2017년 5월 2일 화요일

MySQL Replication 가끔 누락되는 데이터

MySQL Replication 가끔 누락되는 데이터


DB Master 와 Slave 서버로 Replication 으로 동기화 운영중인데

하루에 몇 건 정도는 싱크가 누락되는 것 같다.

이유가 무엇일까 궁금하다~

cron 으로 두 DB 의 테이블을 비교하는 스크립트를 돌려서 다르면 다시 맞춰주고 있지만

제대로 Replication 이 되면 얼마나 좋을까~

그냥 푸념해본다~

2017년 4월 21일 금요일

CentOS 7.x minimal ifconfig command not found

CentOS 7.x minimal ifconfig command not found



[root@localhost ~]# ifconfig
-bash: ifconfig: command not found

[root@localhost ~]# netstat
-bash: netstat: command not found


[root@localhost ~]# yum install net-tools
...
Dependencies Resolved

================================================================================
 Package         Arch         Version                          Repository  Size
================================================================================
Installing:
 net-tools       x86_64       2.0-0.17.20131004git.el7         base       304 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 304 k
Installed size: 917 k
Is this ok [y/d/N]: y
Downloading packages:
net-tools-2.0-0.17.20131004git.el7.x86_64.rpm              | 304 kB   00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : net-tools-2.0-0.17.20131004git.el7.x86_64                    1/1
  Verifying  : net-tools-2.0-0.17.20131004git.el7.x86_64                    1/1

Installed:
  net-tools.x86_64 0:2.0-0.17.20131004git.el7


Complete!


2017년 4월 7일 금요일

CentOS 6.x X Window 삭제

CentOS 6.x X Window 삭제


서버호스팅을 신청했더니 불필요한 X윈도우까지 설치가 되어 있네요.

삭제하는 방법은 yum 그룹리스트가 있는 확인하고 삭제하면 됩니다.

[root@vps ~]# yum grouplist "X Window System"
Loaded plugins: fastestmirror, security
Setting up Group Process
Loading mirror speeds from cached hostfile
 * base: mirror.oasis.onnetcorp.com
 * epel: mirror.premi.st
 * extras: mirror.oasis.onnetcorp.com
 * rpmforge: ftp.neowiz.com
 * updates: mirror.oasis.onnetcorp.com
Available Groups:
   X Window System
Done
[root@vps ~]# yum groupremove "X Window System"
Loaded plugins: fastestmirror, security
Setting up Group Process
Loading mirror speeds from cached hostfile
 * base: mirror.oasis.onnetcorp.com
 * epel: mirror.premi.st
 * extras: mirror.oasis.onnetcorp.com
 * rpmforge: ftp.neowiz.com
 * updates: mirror.oasis.onnetcorp.com
Resolving Dependencies
--> Running transaction check
---> Package hal.x86_64 0:0.5.14-14.el6 will be erased
--> Processing Dependency: hal >= 0.5.10 for package: hal-info-20090716-5.el6.noarch
--> Processing Dependency: hal = 0.5.14-14.el6 for package: hal-devel-0.5.14-14.el6.x86_64
--> Processing Dependency: hal for package: pm-utils-1.2.5-11.el6.x86_64
---> Package xorg-x11-server-utils.x86_64 0:7.7-14.el6 will be erased
---> Package xorg-x11-xauth.x86_64 1:1.0.9-1.el6 will be erased
---> Package xorg-x11-xinit.x86_64 0:1.0.9-14.el6 will be erased
--> Processing Dependency: xorg-x11-xinit >= 1.0.2-22.fc8 for package: imsettings-0.108.0-3.6.el6.x86_64
--> Running transaction check
---> Package hal-devel.x86_64 0:0.5.14-14.el6 will be erased
---> Package hal-info.noarch 0:20090716-5.el6 will be erased
---> Package imsettings.x86_64 0:0.108.0-3.6.el6 will be erased
---> Package pm-utils.x86_64 0:1.2.5-11.el6 will be erased
--> Processing Dependency: pm-utils for package: libvirt-client-0.10.2-62.el6.x86_64
--> Running transaction check
---> Package libvirt-client.x86_64 0:0.10.2-62.el6 will be erased
--> Processing Dependency: libvirt-qemu.so.0()(64bit) for package: libvirt-devel-0.10.2-62.el6.x86_64
--> Processing Dependency: libvirt.so.0()(64bit) for package: libvirt-devel-0.10.2-62.el6.x86_64
--> Processing Dependency: libvirt-client = 0.10.2-62.el6 for package: libvirt-devel-0.10.2-62.el6.x86_64
--> Processing Dependency: libvirt-client >= 0.9.12 for package: libvirt-java-0.4.9-1.el6.noarch
--> Running transaction check
---> Package libvirt-devel.x86_64 0:0.10.2-62.el6 will be erased
---> Package libvirt-java.noarch 0:0.4.9-1.el6 will be erased
--> Processing Dependency: libvirt-java = 0.4.9-1.el6 for package: libvirt-java-devel-0.4.9-1.el6.noarch
--> Running transaction check
---> Package libvirt-java-devel.noarch 0:0.4.9-1.el6 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                    Arch        Version                Repository  Size
================================================================================
Removing:
 hal                        x86_64      0.5.14-14.el6          @base      1.2 M
 xorg-x11-server-utils      x86_64      7.7-14.el6             @base      364 k
 xorg-x11-xauth             x86_64      1:1.0.9-1.el6          @base       89 k
 xorg-x11-xinit             x86_64      1.0.9-14.el6           @base       71 k
Removing for dependencies:
 hal-devel                  x86_64      0.5.14-14.el6          @base       48 k
 hal-info                   noarch      20090716-5.el6         @base      311 k
 imsettings                 x86_64      0.108.0-3.6.el6        @base      813 k
 libvirt-client             x86_64      0.10.2-62.el6          @base       15 M
 libvirt-devel              x86_64      0.10.2-62.el6          @base      5.0 M
 libvirt-java               noarch      0.4.9-1.el6            @base       73 k
 libvirt-java-devel         noarch      0.4.9-1.el6            @base       15 k
 pm-utils                   x86_64      1.2.5-11.el6           @base      254 k

Transaction Summary
================================================================================
Remove       12 Package(s)

Installed size: 23 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Erasing    : libvirt-devel-0.10.2-62.el6.x86_64                          1/12
  Erasing    : libvirt-java-devel-0.4.9-1.el6.noarch                       2/12
  Erasing    : libvirt-java-0.4.9-1.el6.noarch                             3/12
  Erasing    : hal-devel-0.5.14-14.el6.x86_64                              4/12
  Erasing    : libvirt-client-0.10.2-62.el6.x86_64                         5/12
  Erasing    : hal-info-20090716-5.el6.noarch                              6/12
  Erasing    : hal-0.5.14-14.el6.x86_64                                    7/12
  Erasing    : pm-utils-1.2.5-11.el6.x86_64                                8/12
  Erasing    : imsettings-0.108.0-3.6.el6.x86_64                           9/12
  Erasing    : xorg-x11-xinit-1.0.9-14.el6.x86_64                         10/12
  Erasing    : 1:xorg-x11-xauth-1.0.9-1.el6.x86_64                        11/12
  Erasing    : xorg-x11-server-utils-7.7-14.el6.x86_64                    12/12
  Verifying  : xorg-x11-server-utils-7.7-14.el6.x86_64                     1/12
  Verifying  : pm-utils-1.2.5-11.el6.x86_64                                2/12
  Verifying  : xorg-x11-xinit-1.0.9-14.el6.x86_64                          3/12
  Verifying  : hal-info-20090716-5.el6.noarch                              4/12
  Verifying  : hal-devel-0.5.14-14.el6.x86_64                              5/12
  Verifying  : libvirt-client-0.10.2-62.el6.x86_64                         6/12
  Verifying  : 1:xorg-x11-xauth-1.0.9-1.el6.x86_64                         7/12
  Verifying  : imsettings-0.108.0-3.6.el6.x86_64                           8/12
  Verifying  : hal-0.5.14-14.el6.x86_64                                    9/12
  Verifying  : libvirt-java-devel-0.4.9-1.el6.noarch                      10/12
  Verifying  : libvirt-java-0.4.9-1.el6.noarch                            11/12
  Verifying  : libvirt-devel-0.10.2-62.el6.x86_64                         12/12

Removed:
  hal.x86_64 0:0.5.14-14.el6          xorg-x11-server-utils.x86_64 0:7.7-14.el6
  xorg-x11-xauth.x86_64 1:1.0.9-1.el6 xorg-x11-xinit.x86_64 0:1.0.9-14.el6

Dependency Removed:
  hal-devel.x86_64 0:0.5.14-14.el6        hal-info.noarch 0:20090716-5.el6
  imsettings.x86_64 0:0.108.0-3.6.el6     libvirt-client.x86_64 0:0.10.2-62.el6
  libvirt-devel.x86_64 0:0.10.2-62.el6    libvirt-java.noarch 0:0.4.9-1.el6
  libvirt-java-devel.noarch 0:0.4.9-1.el6 pm-utils.x86_64 0:1.2.5-11.el6

Complete!