Zimbra offers Open Source email server software and shared calendar for Linux and the Mac
 
Go Back   Zimbra - Forums > Zimbra Collaboration Suite > Installation

Welcome to the Zimbra - Forums!
Welcome, if you would like to post a comment please register. We also encourage you to explore all things Zimbra with our team and members of the community.

Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 11-02-2009, 10:12 AM
Junior Member
 
Posts: 7
Default Help, Install on Fedora 11 Error

Red Hat Fedora 11 32bit x86 (MD5)

Fedora Firewall is Off
Stopped Fedora mail program

Log Error Below



Tue Oct 27 17:26:20 2009 The previous configuration appears to have failed to complete

Tue Oct 27 17:26:27 2009 Saving config in /opt/zimbra/config.2145...
Tue Oct 27 17:26:28 2009 done.
Tue Oct 27 17:26:31 2009 Operations logged to /tmp/zmsetup.10272009-172604.log
Tue Oct 27 17:26:31 2009 checking isEnabled zimbra-ldap
Tue Oct 27 17:26:31 2009 zimbra-ldap is enabled
Tue Oct 27 17:26:31 2009 Initializing ldap...
Tue Oct 27 17:26:31 2009 *** Running as zimbra user: /opt/zimbra/libexec/zmldapinit
IO::Socket::INET: connect: Connection refused at /opt/zimbra/libexec/zmldapinit line 136.
Tue Oct 27 17:29:00 2009 failed. (28416)
Tue Oct 27 17:29:00 2009

ERROR

Tue Oct 27 17:29:00 2009

Configuration failed

Tue Oct 27 17:29:00 2009 Please address the error and re-run /opt/zimbra/libexec/zmsetup.pl to
Tue Oct 27 17:29:00 2009 complete the configuration.
Tue Oct 27 17:29:00 2009
Errors have been logged to /tmp/zmsetup.10272009-172604.log
Reply With Quote
  #2 (permalink)  
Old 11-02-2009, 10:27 AM
Zimbra Consultant & Moderator
 
Posts: 11,517
Default

Do you have valid DNS A & MX records pointing to the Zimbra server and a valid hosts file?
__________________
Regards


Bill
Reply With Quote
  #3 (permalink)  
Old 11-02-2009, 10:45 AM
Junior Member
 
Posts: 7
Default

See Below I set up and A record and an MX Record
My ip connection is 66.166.225.190 and the server is the only machine on it, its ip matches.


Tue Oct 27 17:26:20 2009 checking isEnabled zimbra-mta
Tue Oct 27 17:26:20 2009 zimbra-mta is enabled
Tue Oct 27 17:26:20 2009 MX: mail2.emeryscatering.com (66.166.225.190)
Tue Oct 27 17:26:20 2009
Tue Oct 27 17:26:20 2009 Interface: 66.166.225.190
Tue Oct 27 17:26:20 2009 Interface: 127.0.0.1
Tue Oct 27 17:26:20 2009 done.
Tue Oct 27 17:26:20 2009 checking isEnabled zimbra-ldap
Tue Oct 27 17:26:20 2009 zimbra-ldap is enabled
Reply With Quote
  #4 (permalink)  
Old 11-02-2009, 10:54 AM
Zimbra Consultant & Moderator
 
Posts: 11,517
Default

That's not the IP address I get:

Code:
dig emeryscatering.com mx

; <<>> DiG 9.5.0-P2 <<>> emeryscatering.com mx
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9384
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;emeryscatering.com.            IN      MX

;; ANSWER SECTION:
emeryscatering.com.     1800    IN      MX      5 inbound.registeredsite.com.

;; ADDITIONAL SECTION:
inbound.registeredsite.com. 900 IN      A       66.97.46.122

;; Query time: 501 msec
;; SERVER: 192.168.1.10#53(192.168.1.10)
;; WHEN: Mon Nov  2 18:51:28 2009
;; MSG SIZE  rcvd: 91
Post the output of the following commands (run on the Zimbra server):

Code:
cat /etc/hosts
cat /etc/resolv.conf
dig yourdomain.com any
dig yourdomain.com mx
host `hostname`  <-- use that exact command with backticks not single quotes
Is this machine on a LAN IP or Public? Is in in a VM, if so what are you using? How much RAM is on this machine?
__________________
Regards


Bill
Reply With Quote
  #5 (permalink)  
Old 11-02-2009, 11:46 AM
Junior Member
 
Posts: 7
Default

public IP
1GB Mem
System name mail2.emeryscatering.com
Thanks for the help Just learning Linux


Code:
[root@mail2 ~]# cat /etc/hosts
127.0.0.1	localhost.localdomain	localhost.localdomain	localhost4	localhost4.localdomain4	localhost
::1	localhost.localdomain	localhost.localdomain	localhost6	localhost6.localdomain6	localhost
Code:
[root@mail2 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 64.105.204.27
nameserver 64.105.124.155
[root@mail2 ~]#
Code:
[root@mail2 ~]# dig yourdomain.com any

; <<>> DiG 9.6.1-P1-RedHat-9.6.1-6.P1.fc11 <<>> yourdomain.com any
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44280
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 2, ADDITIONAL: 3

;; QUESTION SECTION:
;yourdomain.com.			IN	ANY

;; ANSWER SECTION:
yourdomain.com.		21600	IN	TXT	"v=spf1 -all"
yourdomain.com.		21600	IN	SOA	ns1.hitfarm.com. hostmaster.hitfarm.com. 2009110208 10800 3600 604800 7200
yourdomain.com.		300	IN	A	208.87.33.151
yourdomain.com.		21600	IN	MX	10 nullmx.yourdomain.com.
yourdomain.com.		21600	IN	NS	ns1.hitfarm.com.
yourdomain.com.		21600	IN	NS	ns2.hitfarm.com.

;; AUTHORITY SECTION:
yourdomain.com.		21600	IN	NS	ns1.hitfarm.com.
yourdomain.com.		21600	IN	NS	ns2.hitfarm.com.

;; ADDITIONAL SECTION:
nullmx.yourdomain.com.	21600	IN	A	209.181.247.105
ns1.hitfarm.com.	3362	IN	A	72.51.27.54
ns2.hitfarm.com.	3362	IN	A	208.87.33.160

;; Query time: 77 msec
;; SERVER: 64.105.204.27#53(64.105.204.27)
;; WHEN: Mon Nov  2 13:33:11 2009
;; MSG SIZE  rcvd: 262
Code:
[root@mail2 ~]# dig yourdomain.com mx

; <<>> DiG 9.6.1-P1-RedHat-9.6.1-6.P1.fc11 <<>> yourdomain.com mx
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42237
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; QUESTION SECTION:
;yourdomain.com.			IN	MX

;; ANSWER SECTION:
yourdomain.com.		21549	IN	MX	10 nullmx.yourdomain.com.

;; AUTHORITY SECTION:
yourdomain.com.		21549	IN	NS	ns2.hitfarm.com.
yourdomain.com.		21549	IN	NS	ns1.hitfarm.com.

;; ADDITIONAL SECTION:
nullmx.yourdomain.com.	21549	IN	A	209.181.247.105
ns1.hitfarm.com.	3311	IN	A	72.51.27.54
ns2.hitfarm.com.	3311	IN	A	208.87.33.160

;; Query time: 12 msec
;; SERVER: 64.105.204.27#53(64.105.204.27)
;; WHEN: Mon Nov  2 13:34:02 2009
;; MSG SIZE  rcvd: 147
Code:
[root@mail2 ~]# host `hostname`
mail2.emeryscatering.com has address 66.166.225.190
mail2.emeryscatering.com mail is handled by 15 mail2.emeryscatering.com.

Last edited by phoenix : 11-02-2009 at 01:18 PM.
Reply With Quote
  #6 (permalink)  
Old 11-02-2009, 01:26 PM
Zimbra Consultant & Moderator
 
Posts: 11,517
Default

Your hosts file is incorrect, it should contain the following (as detailed in the Quick Start Installation Guide):

Code:
127.0.0.1	localhost.localdomain	localhost
x.x.x.x mail2.emeryscatering.com mail <-- that should point to your public IP
You also have insufficient RAM on that server, it should be a minimum of 2GB and 4GB is recommended and you will most likely have problems unless you increase it.
__________________
Regards


Bill
Reply With Quote
  #7 (permalink)  
Old 11-02-2009, 01:49 PM
Junior Member
 
Posts: 7
Default

Quote:
Originally Posted by phoenix View Post
Your hosts file is incorrect, it should contain the following (as detailed in the Quick Start Installation Guide):

Code:
127.0.0.1	localhost.localdomain	localhost
x.x.x.x mail2.emeryscatering.com mail <-- that should point to your public IP
You also have insufficient RAM on that server, it should be a minimum of 2GB and 4GB is recommended and you will most likely have problems unless you increase it.
Sorry for my confusion, I thought my Public IP was 66.166.225.190 this is where I pointed the MX record ? My server is connected direct to a modem
my server IP is the same 66.166.225.190 when I ping mail2.emeryscatering.com I get the same. What do i need to change?
Reply With Quote
  #8 (permalink)  
Old 11-02-2009, 02:36 PM
Junior Member
 
Posts: 7
Default

Quote:
Originally Posted by nrowey View Post
Sorry for my confusion, I thought my Public IP was 66.166.225.190 this is where I pointed the MX record ? My server is connected direct to a modem
my server IP is the same 66.166.225.190 when I ping mail2.emeryscatering.com I get the same. What do i need to change?
Should I point Zimbra to emeryscatering.com 209.237.150.20
Reply With Quote
  #9 (permalink)  
Old 11-03-2009, 12:31 AM
Zimbra Consultant & Moderator
 
Posts: 11,517
Default

I'm somewhat confused by your DNS records, using the DNS servers you have in your hosts file gives the following results:

This is from the first DNS server:
Code:
dig @64.105.204.27 emeryscatering.com mx

; <<>> DiG 9.5.0-P2 <<>> @64.105.204.27 emeryscatering.com mx
; (1 server found)                                           
;; global options:  printcmd                                 
;; Got answer:                                               
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17134    
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3

;; QUESTION SECTION:
;emeryscatering.com.            IN      MX

;; ANSWER SECTION:
emeryscatering.com.     1800    IN      MX      5 inbound.registeredsite.com.

;; AUTHORITY SECTION:
emeryscatering.com.     21600   IN      NS      a.ns.interland.net.
emeryscatering.com.     21600   IN      NS      b.ns.interland.net.
emeryscatering.com.     21600   IN      NS      c.ns.interland.net.

;; ADDITIONAL SECTION:
a.ns.interland.net.     5742    IN      A       64.226.28.33
b.ns.interland.net.     9338    IN      A       209.237.137.10
c.ns.interland.net.     21522   IN      A       209.237.137.10

;; Query time: 151 msec
;; SERVER: 64.105.204.27#53(64.105.204.27)
;; WHEN: Tue Nov  3 08:18:20 2009         
;; MSG SIZE  rcvd: 187
Code:
dig @64.105.204.27 emeryscatering.com any

; <<>> DiG 9.5.0-P2 <<>> @64.105.204.27 emeryscatering.com any
; (1 server found)                                            
;; global options:  printcmd                                  
;; Got answer:                                                
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5606      
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 3, ADDITIONAL: 3

;; QUESTION SECTION:
;emeryscatering.com.            IN      ANY

;; ANSWER SECTION:
emeryscatering.com.     1789    IN      MX      5 inbound.registeredsite.com.
emeryscatering.com.     21589   IN      NS      a.ns.interland.net.
emeryscatering.com.     21589   IN      NS      c.ns.interland.net.
emeryscatering.com.     21589   IN      NS      b.ns.interland.net.

;; AUTHORITY SECTION:
emeryscatering.com.     21589   IN      NS      a.ns.interland.net.
emeryscatering.com.     21589   IN      NS      b.ns.interland.net.
emeryscatering.com.     21589   IN      NS      c.ns.interland.net.

;; ADDITIONAL SECTION:
a.ns.interland.net.     5731    IN      A       64.226.28.33
b.ns.interland.net.     9327    IN      A       209.237.137.10
c.ns.interland.net.     21511   IN      A       209.237.137.10

;; Query time: 165 msec
;; SERVER: 64.105.204.27#53(64.105.204.27)
;; WHEN: Tue Nov  3 08:18:31 2009
;; MSG SIZE  rcvd: 229
This is from the second DNS server:

Code:
dig @64.105.124.155 emeryscatering.com mx

; <<>> DiG 9.5.0-P2 <<>> @64.105.124.155 emeryscatering.com mx
; (1 server found)                                            
;; global options:  printcmd                                  
;; Got answer:                                                
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43158     
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 4

;; QUESTION SECTION:
;emeryscatering.com.            IN      MX

;; ANSWER SECTION:
emeryscatering.com.     807     IN      MX      5 inbound.registeredsite.com.

;; AUTHORITY SECTION:
emeryscatering.com.     20607   IN      NS      a.ns.interland.net.
emeryscatering.com.     20607   IN      NS      b.ns.interland.net.
emeryscatering.com.     20607   IN      NS      c.ns.interland.net.

;; ADDITIONAL SECTION:
inbound.registeredsite.com. 704 IN      A       66.97.46.122
a.ns.interland.net.     12344   IN      A       64.226.28.33
b.ns.interland.net.     1146    IN      A       209.237.137.10
c.ns.interland.net.     1146    IN      A       209.237.137.10

;; Query time: 139 msec
;; SERVER: 64.105.124.155#53(64.105.124.155)
;; WHEN: Tue Nov  3 08:21:38 2009           
;; MSG SIZE  rcvd: 203
Code:
dig @64.105.124.155 emeryscatering.com any

; <<>> DiG 9.5.0-P2 <<>> @64.105.124.155 emeryscatering.com any
; (1 server found)                                             
;; global options:  printcmd                                   
;; Got answer:                                                 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16283      
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 3, ADDITIONAL: 4

;; QUESTION SECTION:
;emeryscatering.com.            IN      ANY

;; ANSWER SECTION:
emeryscatering.com.     802     IN      MX      5 inbound.registeredsite.com.
emeryscatering.com.     20602   IN      NS      b.ns.interland.net.
emeryscatering.com.     20602   IN      NS      a.ns.interland.net.
emeryscatering.com.     20602   IN      NS      c.ns.interland.net.

;; AUTHORITY SECTION:
emeryscatering.com.     20602   IN      NS      b.ns.interland.net.
emeryscatering.com.     20602   IN      NS      a.ns.interland.net.
emeryscatering.com.     20602   IN      NS      c.ns.interland.net.

;; ADDITIONAL SECTION:
inbound.registeredsite.com. 699 IN      A       66.97.46.122
a.ns.interland.net.     12339   IN      A       64.226.28.33
b.ns.interland.net.     1141    IN      A       209.237.137.10
c.ns.interland.net.     1141    IN      A       209.237.137.10

;; Query time: 118 msec
;; SERVER: 64.105.124.155#53(64.105.124.155)
;; WHEN: Tue Nov  3 08:21:43 2009
;; MSG SIZE  rcvd: 245
The first server has no A record for your site and points to a different address other than your domain name. The second server has an A record but it points to an IP other than your server (I guess). Have you created external DNS A & MX records for your domain and pointing at your IP? To confirm your IP address go to this site and it will tell you what it is: Real-time Geographic IP Service - Free Geolocation Database
__________________
Regards


Bill
Reply With Quote
  #10 (permalink)  
Old 11-04-2009, 06:17 AM
Junior Member
 
Posts: 7
Default

Quote:
Originally Posted by phoenix View Post
I'm somewhat confused by your DNS records, using the DNS servers you have in your hosts file gives the following results:

This is from the first DNS server:
Code:
dig @64.105.204.27 emeryscatering.com mx

; <<>> DiG 9.5.0-P2 <<>> @64.105.204.27 emeryscatering.com mx
; (1 server found)                                           
;; global options:  printcmd                                 
;; Got answer:                                               
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17134    
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3

;; QUESTION SECTION:
;emeryscatering.com.            IN      MX

;; ANSWER SECTION:
emeryscatering.com.     1800    IN      MX      5 inbound.registeredsite.com.

;; AUTHORITY SECTION:
emeryscatering.com.     21600   IN      NS      a.ns.interland.net.
emeryscatering.com.     21600   IN      NS      b.ns.interland.net.
emeryscatering.com.     21600   IN      NS      c.ns.interland.net.

;; ADDITIONAL SECTION:
a.ns.interland.net.     5742    IN      A       64.226.28.33
b.ns.interland.net.     9338    IN      A       209.237.137.10
c.ns.interland.net.     21522   IN      A       209.237.137.10

;; Query time: 151 msec
;; SERVER: 64.105.204.27#53(64.105.204.27)
;; WHEN: Tue Nov  3 08:18:20 2009         
;; MSG SIZE  rcvd: 187
Code:
dig @64.105.204.27 emeryscatering.com any

; <<>> DiG 9.5.0-P2 <<>> @64.105.204.27 emeryscatering.com any
; (1 server found)                                            
;; global options:  printcmd                                  
;; Got answer:                                                
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5606      
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 3, ADDITIONAL: 3

;; QUESTION SECTION:
;emeryscatering.com.            IN      ANY

;; ANSWER SECTION:
emeryscatering.com.     1789    IN      MX      5 inbound.registeredsite.com.
emeryscatering.com.     21589   IN      NS      a.ns.interland.net.
emeryscatering.com.     21589   IN      NS      c.ns.interland.net.
emeryscatering.com.     21589   IN      NS      b.ns.interland.net.

;; AUTHORITY SECTION:
emeryscatering.com.     21589   IN      NS      a.ns.interland.net.
emeryscatering.com.     21589   IN      NS      b.ns.interland.net.
emeryscatering.com.     21589   IN      NS      c.ns.interland.net.

;; ADDITIONAL SECTION:
a.ns.interland.net.     5731    IN      A       64.226.28.33
b.ns.interland.net.     9327    IN      A       209.237.137.10
c.ns.interland.net.     21511   IN      A       209.237.137.10

;; Query time: 165 msec
;; SERVER: 64.105.204.27#53(64.105.204.27)
;; WHEN: Tue Nov  3 08:18:31 2009
;; MSG SIZE  rcvd: 229
This is from the second DNS server:

Code:
dig @64.105.124.155 emeryscatering.com mx

; <<>> DiG 9.5.0-P2 <<>> @64.105.124.155 emeryscatering.com mx
; (1 server found)                                            
;; global options:  printcmd                                  
;; Got answer:                                                
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43158     
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 4

;; QUESTION SECTION:
;emeryscatering.com.            IN      MX

;; ANSWER SECTION:
emeryscatering.com.     807     IN      MX      5 inbound.registeredsite.com.

;; AUTHORITY SECTION:
emeryscatering.com.     20607   IN      NS      a.ns.interland.net.
emeryscatering.com.     20607   IN      NS      b.ns.interland.net.
emeryscatering.com.     20607   IN      NS      c.ns.interland.net.

;; ADDITIONAL SECTION:
inbound.registeredsite.com. 704 IN      A       66.97.46.122
a.ns.interland.net.     12344   IN      A       64.226.28.33
b.ns.interland.net.     1146    IN      A       209.237.137.10
c.ns.interland.net.     1146    IN      A       209.237.137.10

;; Query time: 139 msec
;; SERVER: 64.105.124.155#53(64.105.124.155)
;; WHEN: Tue Nov  3 08:21:38 2009           
;; MSG SIZE  rcvd: 203
Code:
dig @64.105.124.155 emeryscatering.com any

; <<>> DiG 9.5.0-P2 <<>> @64.105.124.155 emeryscatering.com any
; (1 server found)                                             
;; global options:  printcmd                                   
;; Got answer:                                                 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16283      
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 3, ADDITIONAL: 4

;; QUESTION SECTION:
;emeryscatering.com.            IN      ANY

;; ANSWER SECTION:
emeryscatering.com.     802     IN      MX      5 inbound.registeredsite.com.
emeryscatering.com.     20602   IN      NS      b.ns.interland.net.
emeryscatering.com.     20602   IN      NS      a.ns.interland.net.
emeryscatering.com.     20602   IN      NS      c.ns.interland.net.

;; AUTHORITY SECTION:
emeryscatering.com.     20602   IN      NS      b.ns.interland.net.
emeryscatering.com.     20602   IN      NS      a.ns.interland.net.
emeryscatering.com.     20602   IN      NS      c.ns.interland.net.

;; ADDITIONAL SECTION:
inbound.registeredsite.com. 699 IN      A       66.97.46.122
a.ns.interland.net.     12339   IN      A       64.226.28.33
b.ns.interland.net.     1141    IN      A       209.237.137.10
c.ns.interland.net.     1141    IN      A       209.237.137.10

;; Query time: 118 msec
;; SERVER: 64.105.124.155#53(64.105.124.155)
;; WHEN: Tue Nov  3 08:21:43 2009
;; MSG SIZE  rcvd: 245
The first server has no A record for your site and points to a different address other than your domain name. The second server has an A record but it points to an IP other than your server (I guess). Have you created external DNS A & MX records for your domain and pointing at your IP? To confirm your IP address go to this site and it will tell you what it is: Real-time Geographic IP Service - Free Geolocation Database
This is what I have set up in DNS Records for emeryscatering.com
am I pointing to the wrong place?

emeryscatering.com A 209.237.150.20 30 min
mail2.emeryscatering.com A 66.166.225.190 30 min
ftp.emeryscatering.com CNAME emeryscatering.com 30 min
imap.emeryscatering.com CNAME mymail.myregisteredsi... 30 min
mail.emeryscatering.com CNAME mail.emeryscatering.c... 1 hour
pop.emeryscatering.com CNAME mymail.myregisteredsi... 30 min
smtp.emeryscatering.com CNAME smtp.emeryscatering.c... 1 hour
Emery's Catering - Rhode Island Caterers for Weddings, Corporate Events, Birthdays and Funerals CNAME emeryscatering.com 30 min
emeryscatering.com MX(5) inbound.registeredsit... 30 min
mail2.emeryscatering.com MX(15) mail2.emeryscatering.... 30 min


Detail for mail2.emeryscatering.com

A Name: mail2.emeryscatering.com
IP Address: Time To Live: 30 min 1 hour 1 day 1 week

MX Name: mail2.emeryscatering.com
Mail Server Name: Domain or subdomain in example.com format
Do not enter an IP address
Preference: 1 5 10 15 20 Custom
Time To Live: 30 min 1 hour 1 day 1 week
Reply With Quote
Reply


Thread Tools
Display Modes


Similar Threads

Why Join?

Registering let's you ask questions, makes it easier to search, displays any files attached to posts, and notifies you about replies.

Zimbrablog.com




 

Search Engine Optimization by vBSEO 3.1.0